我正在使用Visual Studio 2015社区版,并且知道它有创建单元测试以测试代码的选项,但我没有看到测试代码覆盖率的选项,所以我想知道Visual Studio是否有此选项或者我必须使用第三方插件。
如果我必须使用第三方解决方案,那么这是一个好的选择吗?
我正在使用Visual Studio 2015社区版,并且知道它有创建单元测试以测试代码的选项,但我没有看到测试代码覆盖率的选项,所以我想知道Visual Studio是否有此选项或者我必须使用第三方插件。
如果我必须使用第三方解决方案,那么这是一个好的选择吗?
Toni
的答案非常有用,但是我认为对于像我这样的完全新手来说,需要一个快速入门指南来进行测试覆盖率评估。
如已经提到的那样,Visual Studio Professional和Community版本没有内置的测试覆盖支持。然而,可以相当容易地获得。我将编写逐步配置以在Visual Studio 2015专业版中使用NUnit测试。
使用NuGet界面安装OpenCover NUGet组件
获取OpenCoverUI扩展程序。这可以通过使用“工具”->“扩展和更新”直接从Visual Studio安装。
通过访问工具->选项->OpenCover.UI Options->General来配置OpenCoverUI使用适当的可执行文件
NUnit路径:必须指向`nunit-console.exe`文件。这仅在NUnit 2.xx版本中才能找到,可以从这里下载。
OpenCover路径:这应该指向已安装的包,通常是<solution path>\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe
安装ReportGenerator NUGet包
从OpenCover菜单访问OpenCover Test Explorer
。尝试从那里发现测试。如果失败,请检查输出窗口获取更多详细信息。
检查OpenCover结果(在OpenCover菜单中)以获取更多详细信息。它将以树形视图输出代码覆盖率等详细信息。您还可以突出显示已经覆盖或未覆盖的代码(位于左上角的小图标)。
注意:如上所述,OpenCoverUI不支持最新的NUnit(3.xx)主要版本。但是,如果测试中没有使用特定于此版本的内容,则无论是否安装了NUnit 3.xx版本,它都可以正常工作。
这涵盖了快速入门。如评论中已经提到的,有关更高级的配置和自动化,请查看这篇文章。
如已提到,您可以使用Fine Code Coverage来可视化Coverlet输出。如果您创建了一个xunit测试项目
(dotnet new xunit
),您会发现csproj
文件中已经存在Coverlet引用,因为Coverlet
是每个.NET Core和>= .NET 5应用程序的默认覆盖工具。
Microsoft有一个示例使用ReportGenerator将由Coverlet、OpenCover、dotCover、Visual Studio、NCover、Cobertura、JaCoCo、Clover、gcov或lcov生成的覆盖报告转换为各种格式的易于阅读的人类报告。
示例报告:
虽然本文关注C#和xUnit作为测试框架,但MSTest和NUnit也可以使用。
指南:
如果您想在.xml文件中获得代码覆盖率,您可以运行以下任何一个命令:
dotnet test --collect:"XPlat Code Coverage"
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
微软的 Visual Studio Enterprise 2022 拥有代码覆盖率功能,但我更喜欢 Fine Code Coverage。
Fine Code Coverage 的一个特点是测试代码的高亮显示。你可以在这里看到:
Visual Studio Enterprise 的代码覆盖率功能只有: Visual Studio 的代码覆盖率功能