我正在针对大型发布系统运行数百个测试,并希望使用TestNG对测试进行并行化。但是,我找不到任何简单的方法。每个测试用例都会实例化此发布者的实例,发送一些消息,等待发布这些消息,然后转储发布队列的内容并与预期结果进行比较。通过这么多测试来做这件事(即使我使用线程进行并行化,仍然需要很长时间才能完成(1天或更长时间))。
我们发现在测试这种系统时,最好启动系统一次,运行所有测试以发送消息,等待发布执行其操作,转储所有输出,并将输出与测试匹配并验证。例如,而不是以下内容:
@Test
public void testRule1() {
Publisher pub = new Publisher();
pub.sendRule(new Rule("test1-a"));
sleep(10); // wait 10 seconds
pub.dumpRules();
verifyRule("test1-a");
}
我们想做类似以下的事情:
@Test
public void testRule1(bool sendMode) {
if(sendMode) {
this.pub.sendRule(new Rule("test1-a"));
}
else {
verifyRule("test1-a");
}
}
如果您有一个dataProvider使用sendMode = true
运行所有测试,然后执行dumpAllRules()
,然后使用sendMode = false
再次运行所有测试。问题是,TestNG调用相同的方法两次,一次调用sendMode = true
后跟sendMode = false
。无论如何都要在TestNG中完成这个任务吗?
谢谢!
答案 0 :(得分:1)
@Test
@Parameters({ "sendMode" })
public void testRule1(String sendMode){
//blah blah
}
你可以这样做:)
<suite name="xyz">
<parameter name="sendMode" value="normal" />
<test name="sendTest">
<classes>
<class name="com.projectPath.testclass" />
</classes>
</test>