将测试信息写入文件以获取包括断言在内的测试证据

时间:2019-08-13 15:54:55

标签: logging junit4 reporting rules

我们应该以管理层定义的格式为所有测试提供测试证据。 不接受默认的surefire报告,因为它们过于技术性并且缺少一些所需的信息。

尤其是测试应写入文件 -其标题 -所有步骤 -所有检查 -总体结果

有人知道这个的现有解决方案吗?

我通过扩展现有的Rule TestWatcher并覆盖rsp failed的开始,完成和成功方法来设法完成了大多数工作。

这非常有用,因为它在背面透明地发生,并且不会在测试代码中添加多余的行。

但是,在任何断言报告检查之前,我没有找到一种方法可以上钩。 (我认为我必须在方法调用之前挂入钩子,因为我猜在执行后,如果失败了,就无法再报告检查了)

我在TestWatcher扩展程序中编写了一个方法

    public void logAssertionStep(String assertion, String actual, String expected) {
        builder.append("Step "+assertion+": expected "+expected+" to actual "+actual+EOL);
    }

导致

Step assertEquals: expected 5 to actual 5

但是,测试代码变得有点过载和丑陋。特别是您必须复制并重复断言方法...

        int expectedResult = 5;
        watchman.logAssertionStep("assertEquals", Integer.toString(expectedResult), Integer.toString(actual));
        assertEquals(expectedResult, actual);

测试代码应保持不变,并保持尽可能简单

        int expectedResult = 5;       
        assertEquals(expectedResult, actual);

我当时正在考虑使用AOP,但这会引入另一个依赖关系。 由于TestWatcher提供了几乎类似于Aspects的功能,所以junit框架中是否存在类似的可能性?

0 个答案:

没有答案