如何在故障安全中获取失败测试的完整堆栈跟踪?

Gus*_*ave 6 java maven-3 maven-failsafe-plugin

我有一个JUnit集成测试,在Maven Failsafe插件执行时无法抛出异常.我配置了failsafe来将系统写入特定于测试的文件(redirectTestOutputToFile = true).但是该文件和XML测试结果文件都不包含异常的完整堆栈跟踪.在大多数情况下,有趣的东西是在引起链的末尾.

是否有可能以某种方式配置故障保护以记录完整的堆栈跟踪?

当然,可以使用try-catch围绕测试本身并手动记录堆栈跟踪,但这会产生大量的样板代码.

请注意:这个问题不是指surefire,而是故障安全,并已相应标记.它没有询问如何在控制台中显示堆栈跟踪,但如何使故障保护将完整的堆栈跟踪保存到文件而不仅仅是部分文件.这个答案很有用,因为它命名了正确的属性,但它并不完全正确,因为当然必须将配置应用于故障保护,而不是确定.此外,问题2928548的公认答案对于这个问题是明确错误的.

Gus*_*ave 12

故障安全配置属性trimStackTrace(默认情况下设置为true)负责堆栈跟踪操作(感谢Laf!).以下是停用:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>2.19.1</version>
      <executions>
        <execution>
          <goals>
            <goal>integration-test</goal>
            <goal>verify</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <trimStackTrace>false</trimStackTrace>
      </configuration>
    </plugin>
    <!-- (...) -->
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

测试本身的输出可以被重定向到一个文件redirectTestOutputToFile,但是这是不相关的堆栈跟踪问题,因为堆栈跟踪是故障安全的输出,而不是测试代码本身.