首页 > 解决方案 > 使 Maven Surefire 不重定向测试标准错误输出

问题描述

我使用 Strace 分析 JUnit 测试。为了正确地做到这一点,我使用 java.util.logging.Logger 记录了几个 JUnit 事件(beforeEach、afterEach、...)。Java logger 和 Strace 都写入 stderr,这是应该的,而实际的测试结果应该输出到 stdout。当我直接使用 Java 运行测试时,一切都按预期工作,但是当我使用 maven surefire 时,stdout 输出是正确的,而测试 stderr 输出会自动重定向到 surefire-reports 文件夹中的 .xml 文件,我最终在 stderr 输出中只有来自 Strace 的数据。

有没有办法告诉 Maven Surefire 不要重定向标准错误?

这是我的 Maven 肯定配置:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>5.3.2</version>
                </dependency>
            </dependencies>
            <configuration>
                <forkCount>1</forkCount>
                <reuseForks>false</reuseForks>
                <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                <useFile>true</useFile>
            </configuration>
        </plugin>

标签: mavenmaven-surefire-plugin

解决方案


尝试<redirectTestOutputToFile>明确设置为false. 也许默认值false会以某种方式被覆盖。


推荐阅读