【问题标题】:How to change TestNG dataProvider order如何更改 TestNG dataProvider 顺序
【发布时间】: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


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多