当使用新的测试数据(而不是来自数据提供者的原始数据)重试失败的测试时,我遇到了一个问题。如果我错过了适当的现有主题,请随时为我指出正确的方向。
我发现,如果测试方法失败,也会重试dataprovider方法。如何仅重新运行测试方法(使用原始测试数据)?
提前感谢您的帮助。
以下是我的代码的一些部分:
测试类:
@Listeners({RetryTestListener.class})
public class MyClassTest extends FunctionalTest {
private boolean counter = true;
@BeforeTest(alwaysRun = true)
public void beforeTest(ITestContext context) {
for (ITestNGMethod method : context.getAllTestMethods()) {
if(Arrays.asList(method.getGroups()).contains("expectedDataFromUpstream")) {
method.setRetryAnalyzer(new MyClassTest());
}
}
}
@Test(enabled = true, groups = {"expectedDataFromUpstream"}, dataProviderClass = dataProvider="dataProvider")
public void testWithRerun(boolean flag1, boolean flag2) {
if(counter) {
counter = false;
stepHelper().assertThat("Fail result", true, Matchers.equalTo(false));
} else {
counter = true;
stepHelper().assertThat("Pass result", true, Matchers.equalTo(true));
}
}
@DataProvider(name="dataProvider")
public Object[][] dataProvider(Method method) {
return new Object[][] { { getRandomBoolean(), getRandomBoolean() }, { getRandomBoolean(), getRandomBoolean() }, { getRandomBoolean(), getRandomBoolean() }};
}
public boolean getRandomBoolean() {
return Math.random() < 0.5;
}
}
RetryTestListener:
public class RetryTestListener extends TestListenerAdapter {
@Override
public void onTestSuccess(ITestResult result) {
if (result.getMethod().getRetryAnalyzer() != null) {
FunctionalTest retryAnalyzer = (FunctionalTest)result.getMethod().getRetryAnalyzer();
retryAnalyzer.setDefaultCurrentCounterValue();
}
}
@Override
public void onTestFailure(ITestResult result) {
if (result.getMethod().getRetryAnalyzer() != null) {
FunctionalTest retryAnalyzer = (FunctionalTest)result.getMethod().getRetryAnalyzer();
if(retryAnalyzer.isRetryAvailable()) {
result.setStatus(ITestResult.SKIP);
} else {
result.setStatus(ITestResult.FAILURE);
}
Reporter.setCurrentTestResult(result);
}
}
}
IRetryAnalyzer:
public abstract class FunctionalTest extends BaseFunctionalTest implements IRetryAnalyzer {
private static int currentCounterValue = 1;
public boolean isRetryAvailable() {
return currentCounterValue % 2 != 0;
}
public void setDefaultCurrentCounterValue() {
currentCounterValue = 1;
}
@Override
public boolean retry(ITestResult result) {
if (isRetryAvailable()) {
currentCounterValue++;
return true;
}
setDefaultCurrentCounterValue();
return false;
}
.....
}
团队已经知道这个问题:https://github.com/cbeust/testng/issues/891
16. ORM和数据访问
我想使用Cloud Dataflow,PubSub和Bigquery将tableRow写入PubSub消息,然后将它们写入Bigquery。我希望表名、项目id和数据集id是动态的。 我在internet上看到下面的代码,我不明白如何传递数据行参数。 先谢谢你,盖尔
我有spring boot项目(版本< code>2.4.6),带有spring数据依赖项(< code > spring-boot-starter-data-JPA )和postgreSQL驱动程序。 在项目中,我们使用Hibernate和数据存储库,通过以下方式配置: 我还想加入反应性R2DBC。我的计划是在一个特定的地方使用它,在那里我们与其他系统集成,这样的通信通过反应式数据流进行。根据它
我使用的是PrimeFaces 2.2和JSF 2.0.3。 我有一个包含以下数据表的xhtml视图: ..具有以下背衬豆: 注意母亲姓名列上的“commandLink”和出生日期列上的“sortBy”。 我遇到了一个奇怪的问题,似乎仅限于IE,如果我按DOB对数据进行排序,然后分页到最后一页并单击表中最后一条记录的commandLink,它会触发两个action事件。第一个事件正确地报告了我单击
现在,如果我再次打开我的应用程序,并通过Azure.iOS框架查询收集文档,它会返回我刚才保存的结果。这让我感到有点莫名其妙。我是不是错过了应用程序中的某些操作,还是所有的MongoDB工具都无法列出文档?该框架的文档相当稀疏,因此希望提供任何帮助。
15.7 参数和数据处理的常见问题 Spring JDBC框架提供了多个方法来处理常见的参数和数据问题 15.7.1 为参数设置SQL的类型信息 通常Sping通过传入的参数类型决定SQL的参数类型。可以在设定参数值的时候显式提供SQL类型。有些场景下设置NULL值是有必要的。 你可以通过以下方式来设置SQL类型信息: 许多JdbcTemplate的更新和查询方法需要传入额外的int数组类型的参数