我有一些并行运行的测试类和方法。 我正在使用log4j2进行日志记录,但是控制台的日志输出相互混淆。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
@Execution(ExecutionMode.CONCURRENT)
public class TestClass1 {
Logger log = LogManager.getLogger();
@Test
public void test1() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("Performing test1 method in " + this.getClass().getName());
}
@Test
public void test2() {
log.info("Performing test2 method in " + this.getClass().getName());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
期望在test1 TestClass1中看到输出-在TestClass1中执行test1方法
以及在tests2 TestClass1中-在TestClass1中执行test2方法
答案 0 :(得分:0)
看起来IntelliJ IDEA上仍然存在问题 IntelliJ test runner mixes output from different tests when TestNG parallel is used
答案 1 :(得分:0)
关于opened bug in JetBrains,此问题将不会在某天得到解决。 我尝试使用下面错误中提到的TestReporter注入,但是它也不起作用。
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestReporter;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
@Execution(ExecutionMode.CONCURRENT)
public class TestClass1 {
@Test
public void test1(TestReporter testReporter) {
testReporter.publishEntry("test1 started");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Test
public void test2(TestReporter testReporter1) {
testReporter1.publishEntry("test2 started");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}