我们曾经有一位技术总监,他喜欢贡献代码,也非常热衷于添加单元测试。不幸的是,他喜欢的测试方式是产生一些输出到屏幕上并目视检查结果。
鉴于我们有大量测试,是否有任何工具或技术可以用来识别从未断言的测试?
由于这是一次性操作,我会:
编辑:另一种选择是仅查找对 System.out 的引用或任何他喜欢的输出内容的方式,大多数测试都没有。
如果这些测试是唯一产生输出的测试,那么自动批量替换System.out.println(
withorg.junit.Assert.fail("Fix test: " +
将准确突出那些没有发挥作用的测试。这种技术可以很容易地在运行后在 IDE 中检查这些测试并决定是修复还是删除它们;它还清楚地表明了进展。
不确定工具,但想到的想法是双重的。
创建一个 TestRule 类来跟踪每个测试的断言数量(使用静态计数器,在测试开始时清除计数器,在测试结束时断言它不为 0)。
将 Assert 类包装在您自己的代理中,该代理每次调用时都会增加 TestRule 的计数器。
您的 Assert 类是否称为 Assert,您只需要更新导入并将规则添加到测试中。上述机制不是线程安全的,因此如果您同时运行多个测试,您将得到不正确的结果。