我正在针对大型发布系统运行数百个测试,并希望使用 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中完成这个?
谢谢!