有没有办法与多个线程并行运行相同的类,比如
<suite name="myTestSuite" verbose="1">
<test name="myTest" parallel="classes" thread-count="5">
<classes>
<class name="myPackage.Test" />
</classes>
</test>
</suite>
我希望在5个并行线程中调用类'myPackage.Test'。我知道如果我想并行执行不同的类,它会起作用,比如
<suite name="myTestSuite" verbose="1">
<test name="myTest" parallel="classes" thread-count="5">
<classes>
<class name="myPackage.Test1" />
<class name="myPackage.Test2" />
<class name="myPackage.Test3" />
<class name="myPackage.Test4" />
<class name="myPackage.Test5" />
</classes>
</test>
</suite>
答案 0 :(得分:1)
作为Factory模式的替代,您可以为每次运行类创建一个<test>
节点,然后按test
进行并行化。您还希望将并行化属性移动到<suite>
节点。例如:
<suite name="mySuite" parallel="tests" thread-count="5">
<test name="myTest1">
<classes>
<class name="myPackage.Test" />
</classes>
</test>
<!-- Repeat the '<test>' node as many times as you wish to run the class -->
</suite>
您必须唯一地命名每个<test>
,但这是一种非常简单的方式,可以多次并行地运行同一个类。
答案 1 :(得分:0)
您可以使用Factory
创建5个测试类实例。
public class TestFactory {
@Factory
public Object[] createInstances() {
Object[] result = new Object[5];
for (int i = 0; i < 5; i++) {
result[i] = new Test();
}
return result;
}
}
然后,您可以使用parallel="instances"
。
<suite name="myTestSuite" verbose="1">
<test name="myTest" parallel="instances" thread-count="5">
<classes>
<class name="myPackage.TestFactory"/>
</classes>
</test>
</suite>