如何更改TestNG dataProvider命令

时间:2009-08-24 23:39:06

标签: batch-file testng testng-dataprovider

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

谢谢!

1 个答案:

答案 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>