【问题标题】:How to get the full stacktrace of failed tests in failsafe?如何在故障安全中获取失败测试的完整堆栈跟踪?
【发布时间】:2017-02-15 12:02:11
【问题描述】:

我有一个 JUnit 集成测试,它在由 Maven Failsafe 插件执行时抛出异常失败。我将故障安全配置为将系统写入特定于测试的文件(redirectTestOutputToFile=true)。但该文件和 XML 测试结果文件都不包含异常的完整堆栈跟踪。与大多数情况一样,有趣的东西位于因果链的末端。

是否有可能以在某处记录完整堆栈跟踪的方式配置故障安全?

当然可以用 try-catch 包围测试本身并手动记录堆栈跟踪,但这会导致大量样板代码。

请注意:此问题不涉及 surefire,而是涉及 failsafe 并已相应标记。它没有询问如何在 console 中显示堆栈跟踪,而是如何使故障安全将 full 堆栈跟踪保存到文件中,而不仅仅是其中的一部分。 This answer 很有帮助,因为它命名了正确的属性,但它并不完全正确,因为当然必须将配置应用于故障安全,而不是万无一失。此外,question 2928548 的公认答案对于这个问题是绝对错误的。

【问题讨论】:

  • 请参阅here 对上述欺骗问题的回答。
  • 应该很明显,这个问题至少不是“完全”重复(“这个问题被标记为现有问题的完全重复。”)。 Surefire 和 Failsafe 被 Maven 和相关文档视为独立插件,即使它们共享大量代码。
  • 我会分享我在这里找到的答案,但这是不可能的,因为必须先重新打开该问题。这有点令人沮丧。在将问题标记为重复之前,请三思并仔细阅读。
  • 对不起,我读了你的问题和重复的候选人,误读了你的问题。

标签: java maven-3 maven-failsafe-plugin


【解决方案1】:

故障安全配置属性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 的文件,但这与堆栈跟踪问题无关,因为堆栈跟踪是故障安全的输出,而不是测试代码本身的输出。

【讨论】:

  • 那里显示了很多配置。答案是正确的,但并没有准确指出您需要哪条线。
  • 我尝试将 trimStackTrace 设为粗体,但这在代码部分中似乎是不可能的。我不知道是否可以添加行号。
  • &lt;trimStackTrace&gt;false&lt;/trimStackTrace&gt; 添加到根&lt;project&gt; 下的&lt;properties&gt; 块似乎可以正常工作。这可能也会影响万无一失,但我认为这是一种奖励。
  • 在@meustrus 的注释之后,您甚至可以将其作为命令行参数传递:-DtrimStackTrace=false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2011-01-29
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多