如何从开发机器观察新代码的代码覆盖率
How can I observe the code coverage on new code from the development machine
SonarQube 是查看新代码的代码覆盖率的好工具。
假设我们正在处理一个包含遗留代码的项目。 (单元测试是用 C# 和 NUnit 完成的)
开发人员如何确定开发机器上新代码的代码覆盖率百分比。这样他们就可以在收到来自 SonarQube 的报告之前添加足够的单元测试。
这是一个例子:
- 开发人员在他们的开发机器上编写代码,他们在不同的代码分支上工作,但应该确保他们添加的新代码覆盖了 80% 的单元测试(我们不关心遗留代码,但我们关心新代码)
- SonarQube 运行 每天与 CI 工具一起分析 "Develop" 分支中的代码并重现新代码的代码覆盖率(在报告中)。但是在 CI 获得 运行 之前,开发人员无法看到该信息。
- 我们需要一些工具(或解决方案),以便开发人员可以直接在 Visual Studio 中或至少从开发机器上看到新代码的代码覆盖率,这样他们就会知道他们没有进行足够的单元测试对于他们编写的代码,他们必须在将代码检查到源代码管理之前添加更多的单元测试。
有许多 C# 代码覆盖工具,开发人员可以从桌面上的分支 运行 查看一些工具 here。在我的团队中,我们在服务器上进行了覆盖 运行(我们使用了 NCover)并且开发人员能够通过网络访问覆盖详细信息。
正如您所提到的,最简单的方法是使用 Visual Studio built-in code coverage but this is available only for the Enterprise Version.
其他选择是使用具有 VS 插件的覆盖工具,例如NCover, dotCover or OpenCover.
这里有几点需要注意:
1. 覆盖率结果可能因工具而异,因为有多种指标和技术可以衡量它们。
2. 代码覆盖率是far from perfect技术来衡量开发人员测试的质量。我希望开发人员专注于开发他们能做到的最好的代码和最好的测试来验证他们的代码是否有效,而不用担心人为的数字,比如 80% 的代码覆盖率可能对质量毫无影响。代码覆盖工具有助于确定改进现有测试和死代码等事物的方法,但应谨慎使用。
总结一下: 可以从每个开发人员的桌面上 运行 代码覆盖率,但在我看来让开发人员关注覆盖率数字而减少关注似乎适得其反关于开发质量代码和测试。
SonarQube 是查看新代码的代码覆盖率的好工具。 假设我们正在处理一个包含遗留代码的项目。 (单元测试是用 C# 和 NUnit 完成的)
开发人员如何确定开发机器上新代码的代码覆盖率百分比。这样他们就可以在收到来自 SonarQube 的报告之前添加足够的单元测试。
这是一个例子: - 开发人员在他们的开发机器上编写代码,他们在不同的代码分支上工作,但应该确保他们添加的新代码覆盖了 80% 的单元测试(我们不关心遗留代码,但我们关心新代码) - SonarQube 运行 每天与 CI 工具一起分析 "Develop" 分支中的代码并重现新代码的代码覆盖率(在报告中)。但是在 CI 获得 运行 之前,开发人员无法看到该信息。 - 我们需要一些工具(或解决方案),以便开发人员可以直接在 Visual Studio 中或至少从开发机器上看到新代码的代码覆盖率,这样他们就会知道他们没有进行足够的单元测试对于他们编写的代码,他们必须在将代码检查到源代码管理之前添加更多的单元测试。
有许多 C# 代码覆盖工具,开发人员可以从桌面上的分支 运行 查看一些工具 here。在我的团队中,我们在服务器上进行了覆盖 运行(我们使用了 NCover)并且开发人员能够通过网络访问覆盖详细信息。
正如您所提到的,最简单的方法是使用 Visual Studio built-in code coverage but this is available only for the Enterprise Version.
其他选择是使用具有 VS 插件的覆盖工具,例如NCover, dotCover or OpenCover.
这里有几点需要注意:
1. 覆盖率结果可能因工具而异,因为有多种指标和技术可以衡量它们。
2. 代码覆盖率是far from perfect技术来衡量开发人员测试的质量。我希望开发人员专注于开发他们能做到的最好的代码和最好的测试来验证他们的代码是否有效,而不用担心人为的数字,比如 80% 的代码覆盖率可能对质量毫无影响。代码覆盖工具有助于确定改进现有测试和死代码等事物的方法,但应谨慎使用。
总结一下: 可以从每个开发人员的桌面上 运行 代码覆盖率,但在我看来让开发人员关注覆盖率数字而减少关注似乎适得其反关于开发质量代码和测试。