【问题标题】:Synchronization of test methods possible in Java?Java中可以同步测试方法吗?
【发布时间】:2017-05-26 12:11:11
【问题描述】:

如标题所示,是否可以在同一个测试类中并行运行测试方法以加快测试过程?

目前正在使用 Junit,但计划最终切换到 TestNG,因此请随意使用其中任何一个来回答您的问题。

在功能测试 (Selenium) 的上下文中使用测试,并且由于测试会检查生产服务器,因此使用多个线程来加快测试过程不会有任何问题。

从到目前为止的搜索中,我已经确定使用 TestNG 我可以并行运行不同的类(包含测试方法),我想知道的是我是否可以在同一个测试类中并行运行这些方法而不是序列化方式。

【问题讨论】:

  • @borowis 虽然在发布之前我还没有看到该线程,但我也想知道 TestNG 的实现,因为那是最终目标。此外,该答案的建议实施是关于在并行流中运行多个类。我在问如何在同一个测试类中并行运行多个方法。
  • feel free to use either for your answer,不过好吧,我明白了。还有如何为junit并行方法。
  • @borowis 如果一个有实现而另一个没有,我会根据需要去做,但因为我认为 testNg 是更好的解决方案(到目前为止我对这件事也知之甚少正如谷歌搜索引导我的那样),如果两者都有这个,那么我肯定想知道,所以我可以更好地支持我转向 TestNG 的决定。

标签: java junit synchronization testng


【解决方案1】:

TestNG 中的并行化取决于套件中指定的模式。

<suite name="My suite" parallel="methods" thread-count="5">

会让5个方法同时并行运行,只要它们不相互依赖。 Dependend 方法将等到所有依赖项都已运行后才会启动。其他模式是“测试”、“类”和“实例”。

如果你想在同一个 xml 中为不同的测试使用不同的线程,你可以将 parellel 属性添加到测试标签中,例如

<suite name="default" thread-count="4">
    <test name="asa" parallel="methods">
        <classes>
            <class name="multiThreaded"/>
            <class name="multiThreaded"/>
        </classes>
    </test>
    <test name="asa" parallel="false">
        <classes>
            <class name="singleThreaded"/>
            <class name="singleThreaded"/>
        </classes>
    </test>
</suite>

http://testng.org/doc/documentation-main.html#parallel-tests 了解更多信息

【讨论】:

  • 还没有完成 selenium 包装器框架的实现,以便迁移到 testng,所以我对 testng 的细节知之甚少。感谢您的链接。似乎是一种无需添加太多样板代码即可处理此问题的优雅方式。只是出于好奇的规范,你可以同时拥有 在同一个xml中还是并行属性的值必须是唯一的?
  • &lt;suite&gt; 标签对于 xml 是唯一的,但您可以为每组测试指定线程,例如
猜你喜欢
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多