testng.xml:
<suite name="Default Suite" parallel="classes" thread-count="3">
<test name="example">
<classes>
<class name="ExampleTest"/>
<class name="ExampleTest2"/>
</classes>
</test>
</suite>
测试:
@Test(singleThreaded = true)
public class ExampleTest {
@Test
public void firstTest() {
// first test
}
@Test(dependsOnMethods = "firstTest")
public void secondTest() {
// second test depends from first test
}
}
测试在三个线程中运行,但第一个测试在一个线程中,第二个测试在第二个线程中,分别,第二个测试会下降,因为它依赖于第一个测试。如何运行并行测试,以便一个类中的所有测试都在一个线程中执行?
提前谢谢您。
最佳答案
TestNG 中存在错误。这是link to GitHub issue .
从7.0.0-beta1开始它是固定的。但您应该将 -Dtestng.thread.affinity=true
设置为 JVM 参数。 IntelliJ IDEA 步骤:转到“运行”->“编辑配置”:
测试类1:
import org.testng.annotations.Test;
import org.testng.log4testng.Logger;
public class TestClass1 {
private static final Logger LOGGER = Logger.getLogger(TestClass1.class);
@Test
public void test1() {
LOGGER.warn("TestClass1 - test1. Thread " + Thread.currentThread().getId());
}
@Test(dependsOnMethods = "test1")
public void test2() {
LOGGER.warn("TestClass1 - test2. Thread " + Thread.currentThread().getId());
}
}
测试类2:
public class TestClass2 {
private static final Logger LOGGER = Logger.getLogger(TestClass1.class);
@Test
public void test1() {
LOGGER.warn("TestClass2 - test1. Thread " + Thread.currentThread().getId());
}
}
TestNG XML:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Default Suite" parallel="classes" thread-count="3">
<test name="example">
<classes>
<class name="com.stackover.project.TestClass1"/>
<class name="com.stackover.project.TestClass2"/>
</classes>
</test>
</suite>
输出:
[TestClass1] [WARN] TestClass1 - test1. Thread 11
[TestClass1] [WARN] TestClass2 - test1. Thread 12
[TestClass1] [WARN] TestClass1 - test2. Thread 11
===============================================
Default Suite
Total tests run: 3, Passes: 3, Failures: 0, Skips: 0
===============================================
P.S:如果 TestClass1.test1()
失败,则 TestClass1.test2()
将被忽略。
关于java - 使用 testNG 并行化测试时,类中的测试不会在同一线程中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185500/