【问题标题】:Maven surefire plugin doesn't include system-out in xml for passed testsMaven surefire 插件在 xml 中不包含用于通过测试的系统输出
【发布时间】:2014-10-30 10:50:56
【问题描述】:

我有一个奇怪的问题——我有许多 jUnit 测试,它们会生成标准输出的日志,这很好——它们会打印到控制台等等。但是对于集成部分,我需要将它们包含在target/surefire-report/TEST-<class>.xml 中。对于失败的测试,有<system-out><system-err>,但对于通过的测试,这两个都缺失。我已经为此苦苦挣扎了两天,没有任何运气。似乎没有任何属性可以解决这个问题(<redirectTestOutputToFile>true</redirectTestOutputToFile> 除外,它的工作方式略有不同,并创建单独的 -output 文件,jenkins 没有选择这些文件)。

【问题讨论】:

  • 如果测试通过了,为什么输出是相关的?如果您关心输出,这可能表明您的测试中没有足够的断言。
  • 仅供参考。作为背景 - 这些不是典型的单元测试,而是更复杂的测试,包括与外部服务器的通信(是的,我们知道这不完全适合,但基本设置工作得很好,除了这个丢失的日志部分)
  • @Wojtek 你找到解决方案了吗?
  • @payne 不幸的是没有。

标签: java maven junit jenkins


【解决方案1】:

如果你最关心关于 Jenkins 的报告,这是由Jenkins JUnit plugin 生成的,它有这样一个选项:

保留长标准输出/错误:如果选中,则测试套件中的任何标准输出或错误将在构建完成后保留在测试结果中。 (这仅指打印到控制台的附加消息,而不是故障堆栈跟踪)。如果测试失败,则始终保留此类输出,但默认情况下,通过测试的冗长输出会被截断以节省空间。如果您需要查看通过测试的每条日志消息,请选中此选项,但请注意,即使您从未查看测试结果,Jenkins 的内存消耗也会因此大幅增加!

参数(用于管道)是keepLongStdio

例如

junit testResults: '**/target/surefire-reports/TEST-*.xml', keepLongStdio: true

【讨论】:

    【解决方案2】:

    我建议使用redirectTestOutputToFile 配置项,它正是为此目的。但它会重定向到一个单独的文件。

    在那里你会找到标准输出等的输出。reportsDirectory/testName-output.txt

    【讨论】:

    • 好的,很好,但正如 OP 中提到的,我知道这个选项,但它不起作用,因为这些文件没有被 Jenkins 拾取并且没有显示......
    • 默认情况下它们不会被拾取,但您可以将它们附加到 jenkins 的构建中。您可以查看工作区..
    • 这是个问题——如何让它们显示在成功页面的结果页面上?
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2018-04-05
    相关资源
    最近更新 更多