我在Junit测试类中使用Java util logging(JUL),JUL在默认配置下工作(即打印到控制台)。
来自@BeforeClass
和@AfterClass
注释的方法的日志语句在执行时会被打印,但会登录' @Test'所有测试执行完成后才打印方法。
不确定到底出了什么问题,因为早期工作正常。
记录器实例化:
private static Logger logger = Logger.getLogger(MainIntegrationTest.class.getName());
记录器使用:
logger.info("start test");
测试用例使用maven运行。我注意到只有在我使用这个surefire配置开始并行运行测试类之后才开始发生这种情况:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<parallel>classes</parallel>
<useUnlimitedThreads>true</useUnlimitedThreads>
</configuration>
</plugin>
如果我以串行方式运行测试类,则会在测试执行时打印日志。
答案 0 :(得分:0)
测试用例使用maven运行。我注意到只有在我使用这个surefire配置并行开始运行测试类之后才开始发生这种情况
如果所有测试同时写入控制台,则输出将变为扰乱。对于并发执行,必须为整个运行缓冲结果,然后将其作为一个块写入控制台。写入控制台的唯一安全时间是测试完成。
即使缓冲是逐行执行的,这也可能导致控制台中的交错消息很难读取甚至误导您,因为您不知道该行的来源。