Visual Studio是否具有单元测试的代码覆盖率?


82

我使用的是Visual Studio 2015社区版,我知道它可以创建用于测试代码的单元测试的选项,但是我看不到用于测试代码覆盖率的选项,因此我想知道Visual Studio是否具有此选项,或者如果我必须使用第三方插件。

如果我必须使用第三方解决方案,那将是一个好选择吗?

Answers:


79

仅Visual Studio 2015 Enterprise具有内置的代码覆盖率。参见特征矩阵详细信息,。

您可以使用OpenCover.UI扩展在Visual Studio中进行代码覆盖率检查。它支持MSTest,nUnit和xUnit。

可以从此处下载新版本(发行说明)。



2
OpenCover UI似乎不支持NUnit 3
Lennart

1
opencover.UI(与VS集成)具有非常混乱的报告(结果窗口),根本无法使用。直接去opencover:allenconway.net/2015/06/...
罗马Pokrovskij

47

如果您使用的是Visual Studio 2017,并且遇到此问题,则可以考虑使用AxoCover。这是一个免费的VS扩展,它集成了OpenCover,但支持VS2017(它似乎也在积极开发中。+1)。

VS扩展页面

https://github.com/axodox/AxoTools


9
值得注意的是(当前)仅支持.NET的桌面版本-即在撰写本文时似乎不支持.NET Core。
杰伊[Jay]

6
2017年12月12日,仍然不支持.NET Core / Xamarin
Tuan Tran

1
对。没有.net核心。我安装后才意识到。:( 2018
JzInqXc9Dg

2
截至2019年3月,AxoCover还仅支持xUnit 2.2(已经使用了两年多),目前没有计划支持xUnit 2.3或2.4。如果您希望运行xUnit测试,请不要打扰。
肖恩·韦尔科玛'19

2
可悲的是,这是2020年6月,上述评论仍然成立。
ΕГИІИО

34

Toni的答案非常有用,但我认为所有初学者都可以快速入门来测试覆盖率评估(就像我一样)。

如前所述,Visual Studio Professional和Community Edition不具有内置的测试覆盖范围支持。但是,可以很容易地获得它。我将编写用于Visual Studion 2015 Professional中的NUnit测试的分步配置。

  1. 使用NuGet界面安装OpenCover NUGet组件

  2. 获取OpenCoverUI扩展。可以使用“工具”->“扩展和更新”直接从Visual Studio安装此文件。

  3. 通过访问工具->选项-> OpenCover.UI选项->常规,将OpenCoverUI配置为使用适当的可执行文件

NUnit路径:必须指向`nunit-console.exe文件。只能在NUnit 2.xx版本中找到,可以从此处下载。

OpenCover路径:通常应指向已安装的软件包<solution path>\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe

  1. 安装ReportGenerator NUGet包

  2. OpenCover Test Explorer从OpenCover菜单访问。尝试从那里发现测试。如果失败,请查看输出窗口以获取更多详细信息。

  3. 查看OpenCover结果(在OpenCover菜单内)以获取更多详细信息。它将在基于树的视图中输出详细信息,例如代码覆盖率。您还可以突出显示未覆盖的代码(左上角的小图标)。

注意:如前所述,OpenCoverUI不支持NUnit的最新主要版本(3.xx)。但是,如果在测试中未使用任何特定于此版本的内容,则无论安装了NUnit 3.xx版本如何,它都不会出现问题。

这涵盖了快速入门。如注释中已经提到的,有关更高级的配置和自动化,请查看本文。


10
该扩展不适用于VS 2019社区。真可惜
nicolascolman

@nicolascolman是的,但是精细代码覆盖率似乎可行
阿列克谢

1

对于在Visual Studio Community 2019中寻求简单解决方案的任何人, Fine Code Coverage都很简单,但效果很好。

它不能给出准确覆盖范围的准确数字,但是会告诉您绿色/红色沟槽覆盖了哪些行。


这是一个很好的提示。但是,它仅适用于.NET Core。
Alexei
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.