我的问题是关于如何在JUnit 5测试类中并行运行。
例如,我有两个简单的测试类,它们代表两个分离的测试管道,它们应并行运行。但是,类中的内部测试应按顺序运行。
public class TestClass1 {
@Test
public void test1() {
System.out.println("Executing test 1 in Class 1");
System.out.println(Thread.currentThread().getId());
try {
Thread.sleep(5000);
Assert.assertTrue(false,"Assertion error in Test 1 Class 1");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Test
public void test2() {
System.out.println("Executing test 2 in Class 1");
Assert.assertTrue(false,"Assertion error in Test 2 Class 1");
System.out.println(Thread.currentThread().getId());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class TestClass2 {
@Test
public void test2() {
System.out.println("Executing test 1 in Class 2");
System.out.println(Thread.currentThread().getId());
Assert.assertTrue(false,"Assertion error in Class 2");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:3)
配置参数,以并行执行顶级类,但方法在同一线程中
junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = same_thread junit.jupiter.execution.parallel.mode.classes.default =并发
答案 1 :(得分:1)
基本上,您需要以下内容:
1.为每个类别指定“ 执行顺序”:
@Execution(ExecutionMode.CONCURRENT)
public class TestClass1 {
...
}
@Execution(ExecutionMode.CONCURRENT)
public class TestClass2 {
...
}
2。添加具有所需并行参数的配置文件。有配置选项:Junit5 User Guide
我有一个在GitHub
上配置的并行演示项目答案 2 :(得分:0)
为了保留整个类测试序列,我在每种测试方法下添加了@Execution(ExecutionMode.SAME_THREAD)
。
我在运行并行测试中遇到的最后一个不便便是测井障碍。
因此,并行启动两个测试后,第一个启动的测试只会显示日志输出。
我在每个帮助程序类中都使用静态记录器:
protected static final org.apache.logging.log4j.Logger log = LogManager.getLogger();