如何在故障安全中获取失败测试的完整堆栈跟踪?
How to get the full stacktrace of failed tests in failsafe?
我有一个 JUnit 集成测试,在由 Maven Failsafe 插件执行时抛出异常失败。我将故障安全配置为将系统写入特定于测试的文件 (redirectTestOutputToFile=true)。但是该文件和 XML 测试结果文件都不包含异常的完整堆栈跟踪。在大多数情况下,有趣的东西在原因链的末端。
是否有可能以在某处记录完整堆栈跟踪的方式配置故障保护?
当然可以用 try-catch 围绕测试本身并手动记录堆栈跟踪,但这会导致大量样板代码。
请注意:此问题不是指 surefire,而是指 failsafe,并已相应标记。它不询问如何在 console 中显示堆栈跟踪,而是如何使故障安全将 full 堆栈跟踪保存到文件中,而不仅仅是部分它。 This answer is helpful, because it names the correct property, nonetheless it is not exactly correct, because of course the configuration must be applied to failsafe, not to surefire. Moreover, the accepted answer of question 2928548 这个问题肯定是错的。
故障安全配置 属性 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>
测试本身的输出可以用 redirectTestOutputToFile 重定向到一个文件,但这与堆栈跟踪问题无关,因为堆栈跟踪是故障安全的输出,而不是测试代码本身的输出。
我有一个 JUnit 集成测试,在由 Maven Failsafe 插件执行时抛出异常失败。我将故障安全配置为将系统写入特定于测试的文件 (redirectTestOutputToFile=true)。但是该文件和 XML 测试结果文件都不包含异常的完整堆栈跟踪。在大多数情况下,有趣的东西在原因链的末端。
是否有可能以在某处记录完整堆栈跟踪的方式配置故障保护?
当然可以用 try-catch 围绕测试本身并手动记录堆栈跟踪,但这会导致大量样板代码。
请注意:此问题不是指 surefire,而是指 failsafe,并已相应标记。它不询问如何在 console 中显示堆栈跟踪,而是如何使故障安全将 full 堆栈跟踪保存到文件中,而不仅仅是部分它。 This answer is helpful, because it names the correct property, nonetheless it is not exactly correct, because of course the configuration must be applied to failsafe, not to surefire. Moreover, the accepted answer of question 2928548 这个问题肯定是错的。
故障安全配置 属性 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>
测试本身的输出可以用 redirectTestOutputToFile 重定向到一个文件,但这与堆栈跟踪问题无关,因为堆栈跟踪是故障安全的输出,而不是测试代码本身的输出。