“检测JUnit”;测试“;从不断言任何事
我们曾经有一位技术总监,他喜欢贡献代码,也非常热衷于添加单元测试。不幸的是,他更喜欢的测试方式是产生一些输出到屏幕,并目视检查结果“检测JUnit”;测试“;从不断言任何事,junit,assert,Junit,Assert,我们曾经有一位技术总监,他喜欢贡献代码,也非常热衷于添加单元测试。不幸的是,他更喜欢的测试方式是产生一些输出到屏幕,并目视检查结果 鉴于我们有大量的测试,是否有任何工具或技术可以用来识别那些从未断言过的测试?不确定是否有工具,但我想到的是两个方面 创建一个TestRule类,跟踪每个测试的断言数(使用静态计数器、在测试开始时清除计数器、在测试结束时断言它不是0) 将Assert类包装在您自己的代理中,该代理在每次调用TestRule时递增TestRule的计数器 您的Assert类称为Asser
鉴于我们有大量的测试,是否有任何工具或技术可以用来识别那些从未断言过的测试?不确定是否有工具,但我想到的是两个方面
您的Assert类称为Assert,您只需要更新导入并将规则添加到测试中。上述机制不是线程安全的,因此如果同时运行多个测试,则结果将不正确。因为这是一次性操作,我会:
- 扫描所有测试方法(简单,获取jUnit报告XML)
- 使用IDE或其他工具搜索引用以断言。*,并将结果导出为方法列表
- awk/perl/excel将结果用于查找不匹配项
编辑:另一种选择是只查找对System.out的引用,或者他喜欢的任何输出方式,大多数测试都不会有这些引用。如果这些测试是唯一产生输出的测试,则自动批量替换
System.out.println(
withorg.junit.Assert.fail(“修复测试:”+
将精确地突出显示那些没有发挥作用的测试。这种技术将使在运行后在IDE中检查这些测试变得容易,并决定是否修复或删除它们;它还提供了一个清晰的进度指示