我正在使用 Visual Studio 2015 社区版,我知道它可以选择创建单元测试来测试代码,但是我没有看到测试代码覆盖率的选项,所以我想知道 Visual Studio 是否有这个选项,或者如果我必须使用第三方插件。
如果我必须使用第三方解决方案,那会是一个不错的选择吗?
只有 Visual Studio 2015 Enterprise 内置了代码覆盖率。有关详细信息,请参阅 the feature matrix。
您可以使用 OpenCover.UI extension 在 Visual Studio 中进行代码覆盖检查。它支持 MSTest、nUnit 和 xUnit。
可以从 here (release notes) 下载新版本。
如果您使用 Visual Studio 2017 并遇到此问题,您可能会考虑使用 AxoCover。这是一个集成了 OpenCover 的免费 VS 扩展,但支持 VS2017(它似乎也在积极开发中。+1)。
https://github.com/axodox/AxoTools
Toni
的答案非常有用,但我认为这是一个让所有初学者快速开始测试覆盖率评估的方法(就像我一样)。
如前所述,Visual Studio 专业版和社区版没有内置的测试覆盖支持。但是,它可以很容易地获得。我将在 Visual Studion 2015 Professional 中编写用于 NUnit 测试的分步配置。
使用 NuGet 接口获取 OpenCoverUI 扩展安装 OpenCover NUGet 组件。这可以通过使用工具直接从 Visual Studio 安装 -> 扩展和更新 配置 OpenCoverUI 以使用适当的可执行文件,方法是访问工具 -> 选项 -> OpenCover.UI 选项 -> 常规
NUnit 路径: 必须指向 `nunit-console.exe 文件。这只能在 NUnit 2.xx 版本中找到,可以从 here 下载。
OpenCover Path:这应该指向已安装的包,通常是 <solution path>\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe
安装 ReportGenerator NUGet 包 从 OpenCover 菜单访问 OpenCover 测试资源管理器。尝试从那里发现测试。如果失败,请检查输出窗口以获取更多详细信息。检查 OpenCover 结果(在 OpenCover 菜单中)以获取更多详细信息。它将在基于树的视图中输出详细信息,例如代码覆盖率。您还可以突出显示已覆盖或未覆盖的代码(左上角的小图标)。
注意:如前所述,OpenCoverUI 不支持 NUnit (3.xx) 的最新主要版本。但是,如果在测试中没有使用此版本的任何特定内容,则无论是否安装了 NUnit 3.xx 版本,它都可以正常工作。
这涵盖了快速入门。正如评论中已经提到的,对于更高级的配置和自动化检查 this article.
对于在 Visual Studio Community 2019 中寻找简单解决方案的任何人,Fine Code Coverage 很简单,但效果很好。
它无法给出精确覆盖范围的准确数字,但它会告诉哪些线路被绿色/红色排水沟覆盖。
如前所述,您可以使用将 coverlet output 可视化的 Fine Code Coverage。如果您创建 xunit test project
(dotnet new xunit
),您会发现 csproj
文件中已经存在 Coverlet 引用,因为 Coverlet
是每个 .NET Core 和 >= .NET 5 应用程序的默认覆盖工具。
Microsoft 有一个使用 ReportGenerator 的示例,该示例将 Coverlet、OpenCover、dotCover、Visual Studio、NCover、Cobertura、JaCoCo、Clover、gcov 或 lcov 生成的覆盖率报告转换为各种格式的人类可读报告。
示例报告:
https://i.stack.imgur.com/RH56M.png
虽然本文侧重于将 C# 和 xUnit 作为测试框架,但 MSTest 和 NUnit 也可以使用。
指导:
如果您想要 .xml 文件中的代码覆盖率,您可以运行以下任何命令:
dotnet test --collect:"XPlat Code Coverage"
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
Microsoft Visual Studio Professional 2022 具有代码覆盖功能,但我更喜欢 Fine Code Coverage。
https://i.stack.imgur.com/khuyf.png
Visual Studio 的代码覆盖率功能:Code coverage feature of Visual Studio
https://i.stack.imgur.com/BQOzA.png
https://i.stack.imgur.com/cCxh5.png
Microsoft Visual Studio Professional 2022 具有代码覆盖功能
没有专业,只有企业:-(
Visual Studio 的代码覆盖率特性:Visual Studio 的代码覆盖率特性
要求:代码覆盖率功能仅在 Visual Studio 企业版中可用。