【发布时间】:2009-08-24 23:39:06
【问题描述】:
我正在针对一个大型发布系统运行数百个测试,并希望使用 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 中做到这一点?
谢谢!
【问题讨论】:
标签: batch-file testng testng-dataprovider