1

我正在针对大型发布系统运行数百个测试,并希望使用 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 = truesendMode = false. 无论如何在TestNG中完成这个?

谢谢!

4

1 回答 1

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>

于 2013-10-16T12:36:03.030 回答