我找遍了所有我知道的地方,但我似乎找不到答案。
如果我将一个“复杂”对象从Data提供者传递给测试方法,Invoker似乎会在每次迭代中获得一个新的RetryAnalyzer实例。
IRL,我的数据提供程序进行DB查询并将对象传递给测试方法。我最初假设DB访问会导致问题,但后来将其缩小到我认为最简单的示例。
请看下文。如果我在 RetryAnalyzer 中设置断点,我可以看到 retryCount 始终为 0。每次调用它时,它都是一个新实例。Test01基本上是一个无限循环。
TestNG 7.0.0
有什么帮助吗?
测试类:
package test;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class RetryTester {
public class DataObject extends Object {
String name;
String url;
DataObject(String name, String url) {
this.name = name;
this.url = url;
}
}
@Test(retryAnalyzer = RetryAnalyzer.class, dataProvider = "getData1")
public void test01(DataObject d) throws Exception {
System.out.println("[" + d.name + "]" + "/[" + d.url + "]");
Assert.fail("Retry test fail");
}
@Test(retryAnalyzer = RetryAnalyzer.class, enabled = true, groups = { "load" }, dataProvider = "getData2")
public void test02(String name, String url) throws Exception {
System.out.println("[" + name + "]" + "/[" + url + "]");
Assert.fail("Retry test fail");
}
@DataProvider
public Object[][] getData1() {
DataObject one = new DataObject("name1", "a");
DataObject two = new DataObject("name2", "b");
Object[][] data = new Object[][] { { one }, { two }, };
return data;
}
@DataProvider
public Object[][] getData2() {
return new Object[][] { new Object[] { "name1", "a" }, new Object[] { "name2", "b" }, };
}
}
重试分析器类:
package test;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class RetryAnalyzer implements IRetryAnalyzer {
private int retryCount = 0;
private int retryMaxCount = 1; // set your count to re-run test
@Override
public synchronized boolean retry(ITestResult result) {
if (retryCount < retryMaxCount) {
System.out.println("Retry logic for '" + result.getName() + "' on class " + this.getClass().getName());
retryCount++;
return true;
}
return false;
}
}
测试01输出:
[name1]/[a]
Retry logic for 'test01' on class test.RetryAnalyzer
[name1]/[a]
Retry logic for 'test01' on class test.RetryAnalyzer
[name1]/[a]
Retry logic for 'test01' on class test.RetryAnalyzer
[name1]/[a]
Retry logic for 'test01' on class test.RetryAnalyzer
[name1]/[a]
Retry logic for 'test01' on class test.RetryAnalyzer
[name1]/[a]
Retry logic for 'test01' on class test.RetryAnalyzer
...
测试02输出:
[name1]/[a]
Retry logic for 'test02' on class test.RetryAnalyzer
[name1]/[a]
[name2]/[b]
Retry logic for 'test02' on class test.RetryAnalyzer
[name2]/[b]
FAILED: test02("name1", "a")
FAILED: test02("name2", "b")
RETRIED: test02("name1", "a")
RETRIED: test02("name2", "b")
这是MyFragmentPagerAdapter类,它扩展了FragmentPagerAdapter。返回我的片段时发现错误 我的国家详情如下。它扩展了Fragment,我将2个文本视图填充到一个视图寻呼机中,如下所示。 堆栈跟踪如下 03-03 05:15:31.093: E/AndreidRuntime(910): FATAL EXCEPTION: main 03-03 05:15:31.09
大家好,有人能帮助我为什么我不能选择“从帐户删除”按钮。如果您查看屏幕截图,selenium成功地点击了显示弹出窗口的星形标志。然后我想让selenium点击从帐户删除按钮,但它不起作用。感谢任何帮助 这是我的代码: 我得到的错误消息是: org.openqa.selenium.invalidselectorexception:给定的选择器//[@id='single producttr']/td
我正在使用dropwizard和jersey2 rest客户端,我得到 然而,当我打开日志记录时,我看到 我怎样才能反序列化这个响应,而不是只得到400? 我的代码看起来像 亚洲账户基本上是空的 我添加了apiVerson,时间戳和错误到亚洲帐户,但它仍然不工作。任何帮助都很感激。
我有以下序列
我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢
我试图在Tomcat8.5上使用jersey在rest WS中使用jackson将一个json字符串转换为一个对象。 对象是在运行时使用javassist(信息来自db)创建的,并添加一个用@jsonanysetter/getter注释的“other”映射。 当我使用buildClass(“MyClass”)调用Jackson的映射器时,它抛出。 当启动时MyClass已经加载到类路径中而不使用b