使Maven Surefire不重定向测试stderr输出

问题描述

我使用Strace分析JUnit测试。为了正确执行此操作,我使用java.util.logging.Logger记录了几个JUnit事件(beforeEach,afterEach等)。 Java记录器以及Strace都应该将其写入stderr,而实际的测试结果应该输出到stdout。 当我直接使用Java运行测试时,一切都按预期工作,但是当我使用maven surefire时,stdout输出是正确的,而测试stderr输出自动重定向到surefire-reports文件夹中的.xml文件,最终在stderr输出中仅包含来自Strace的数据。

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

这是我的maven surefire配置:

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

解决方法

尝试将 <redirectTestOutputToFile> 显式设置为 false。也许 false 的默认值以某种方式被覆盖了。