执行所有测试后打印的Junit测试方法

时间:2017-07-05 14:08:17

标签: junit java.util.logging

我在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>

如果我以串行方式运行测试类,则会在测试执行时打印日志。

1 个答案:

答案 0 :(得分:0)

  

测试用例使用maven运行。我注意到只有在我使用这个surefire配置并行开始运行测试类之后才开始发生这种情况

如果所有测试同时写入控制台,则输出将变为扰乱。对于并发执行,必须为整个运行缓冲结果,然后将其作为一个块写入控制台。写入控制台的唯一安全时间是测试完成。

即使缓冲是逐行执行的,这也可能导致控制台中的交错消息很难读取甚至误导您,因为您不知道该行的来源。