【问题标题】:How to print to Jenkins' console report the messages from failed asserts?如何打印到 Jenkins 的控制台报告来自失败断言的消息?
【发布时间】:2016-10-30 19:07:31
【问题描述】:

我的 FullStack 测试在 Jenkins 上运行,成功时不输出任何内容,否则输出测试名称和失败行。这并不能说明发生了什么问题。

有没有办法在 Jenkins 控制台上打印断言错误消息?

我有一个TestWatcher 已经截取了屏幕截图。它也应该做一个System.out.println(e.getMessage())吗?

我希望它打印如下内容:

java.lang.AssertionError: Page is listing a different job
Expected: <true>
     but: was <false>

【问题讨论】:

    标签: testing jenkins junit hamcrest


    【解决方案1】:

    由于 Jenkins 正在调用 gradle 构建,gradleabsorbing all intermediary outputs,因此只有结果输出到 Jenkins 控制台。

    这是我为解决问题所做的,在我的gradle.build 文件中:

    nameOfTaskThatRunsTests {
        testLogging {
            events "standardOut"
        }
    }
    

    在我的 java 测试文件上:

    @Rule
    public TestRule testWatcher = new TestWatcher() {
        @Override
        public void failed(Throwable t, Description test) {
            if (t instanceof AssertionError) {
                System.out.println("Failed assertion: " + t.getMessage());
            }
        }
    };
    

    【讨论】:

      【解决方案2】:

      您可以使用 Jenkins 的 Build Failure Analyzer Plugin 创建一些正则表达式并将它们打印在构建页面上。

      这将是一个跳转到日志右侧行的链接。

      【讨论】:

      • 我不认为这就是我想要的,它看起来也有点矫枉过正。我只想输出失败的断言已经返回的消息。
      • 我认为这是唯一的可能。
      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多