java - 仅在新代码上测量代码覆盖率

标签 java code-coverage cobertura

我们正在寻找一种创造性的方法来衡量与现有代码分开的新代码的代码覆盖率。我们有一个大型遗留项目,希望开始对任何新功能进行 90% 以上的覆盖。我们希望有一种方法可以轻松查看过滤掉任何旧代码的报告,以确保新功能符合我们的目标。显然仍然希望增加对项目的整体覆盖率,但需要一种非手动的方式来向我们提供有关新代码 Activity 的反馈。我们将此用于静态分析,因为我们可以查看源文件上的日期。因为 Cobertura 正在分析类文件,所以他们有新的日期,这种技术不起作用。

有什么想法吗?

堆栈:

Java 1.5 J单元 科贝图拉 hudson

最佳答案

我们有类似的情况.. 想要测试新代码但不能一次测试所有旧代码。我们所做的并不完全符合您的要求,但可能会给您一个想法。

我们有一个名为 linecoverage.standard 的文件和一个名为 branchcoverage.standard 的文件,它们位于构建服务器(和本地副本)上。他们内部有一个数字,其中包含当前线路和分支机构的覆盖范围限制。如果 checkin 的代码低于标准,则构建失败。如果它符合标准,它就会通过构建。如果它高于标准,则编写一个等于当前覆盖范围的新标准。

这意味着我们的代码覆盖率永远不会变差,应该会慢慢上升。如果新代码是 90%,覆盖率将继续攀升。你也可以设定一个目标,比如每周将标准提高 1,直到达到你的最终目标 (90%)。每周必须向旧代码添加一些测试并不是一个坏主意,如果它被分散到足够的时间。

我们目前的覆盖率高达 75% 左右……与一年前的 0% 相比相当不错。

关于java - 仅在新代码上测量代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636590/

相关文章:

java - Android 未报告的异常 IOException 错误

java - 这种方法如何给我一个 -61 错误?

ios - 使用 Jenkins 在 IOS 中生成 gcda 文件以查看来自 XCTests 的代码覆盖率

cobertura - Cobertura排除与忽略

objective-c - GCovr 未生成有效报告

java - 字符流和字节流有什么区别?

java - 在 Selenium Webdriver 中切换到父窗口

javascript - 如何在同一项目中为 java 和 javascript 配置 Sonarqube 扫描器

c# - 在 Sonar 中获取代码覆盖率但没有测试结果 (.Net)

java - Cobertura 仍然跟踪已删除的文件