当将DataProvider与多个TestNG方法一起使用时,每个方法都将按顺序使用所有数据集运行。相反,我想遍历数据集并在每次迭代中执行所有方法。我不在乎结果是否显示每个测试方法的每个结果或每个方法的运行摘要。
我已经尝试过该选项
order-by-instances="true"
在suite.xml中没有成功。
样例代码:
public class TestNGTest
{
@DataProvider(name = "dp")
public Object[][] createData(Method m) {
return new Object[][] { new Object[] { "Cedric" }, new Object[] {"Martina"}};
}
@Test(dataProvider = "dp")
public void test1(String s) throws InterruptedException {
System.out.println("test1 " + s);
Thread.sleep(1000);
}
@Test(dataProvider = "dp")
public void test2(String s) throws InterruptedException {
System.out.println("test2 " + s);
Thread.sleep(1000);
}
}
实际结果:
test1 Cedric
test1 Martina
test2 Cedric
test2 Martina
PASSED: test1("Cedric")
PASSED: test1("Martina")
PASSED: test2("Cedric")
PASSED: test2("Martina")
想要的结果:
test1 Cedric
test2 Cedric
test1 Martina
test2 Martina
PASSED: test1("Cedric")
PASSED: test2("Cedric")
PASSED: test1("Martina")
PASSED: test2("Martina")
请尝试使用以下侦听器GroupByInstanceEnabler。您可以将此侦听器放在测试类(或测试基类,如果有的话)的Listeners批注中,或者甚至更简单,更好的解决方案是将其放在META-INF中,以让TestNg使用ServiceLoader(http://testng.com加载它。 org / doc / documentation-main.html#listeners-service-loader)
这将使您摆脱suite.xml,而只需要将META-INF和启动器保留在类路径中即可。每当您运行任何测试时,都会加载该测试-无需配置任何类似IDE的内容,也无需创建要运行的套件-它始终会立即加载您的侦听器。
import org.testng.ISuite;
import org.testng.ISuiteListener;
public class GroupByInstanceEnabler implements ISuiteListener {
@Override
public void onStart(ISuite suite) {
suite.getXmlSuite().setGroupByInstances(true);
}
@Override
public void onFinish(ISuite suite) {
}
}
帕维尔
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句