我正在寻找类似于 PHPUnit 的 Java 的“Specifying Covered Methods”。这意味着代码覆盖率工具附带了 JUnit 测试的注释,以便我可以指定哪个 JUnit 测试测试哪个方法。
这样做的效果是在覆盖的行上进行更正确的度量,因为只计算指定方法的行,而不计算整个应用程序的所有执行行。
最佳答案
这种方法听起来好像会给程序员带来沉重的负担。它要么假设测试和方法之间存在 1:1 对应关系(这违背了通常的建议,即考虑测试类而不是方法的行为),要么要求程序员通过私有(private)方法等手动跟踪路径随着代码的重构和变化,每个入口点都会随着时间的推移而变化。
很难看出如何通过类型安全来实现这一点 - 快速自动化操作(例如方法重命名)需要手动步骤来更新测试中的注释。
如果您的要求是更准确地估计测试套件的有效性,您可能会考虑的另一种方法是突变测试。这会将错误植入您的代码中,然后检查您的套件是否能够检测到它们。
有许多系统可用于 Java,包括
此处提供了它们的比较
关于java - 支持 JUnit 测试注释的代码覆盖工具,用于指定 UnitTest 覆盖哪种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901564/