代码覆盖率工具使用指南

代码覆盖率是衡量程序源代码被特定测试套件测试的程度的指标。具有高代码覆盖率的程序经过了更全面的测试,并且比低代码覆盖率的程序含有更少的软件缺陷的可能性。OpenCover是一个用于.NET 2及以上版本的代码覆盖率工具,支持32位和64位进程,包括分支和序列点;它自豪地基于PartCover——

示例源代码

以下是一个简单的数学库,包含Add和Divide方法,用于演示如何测量代码覆盖率

using System; namespace DotNetThoughts.Net { public class Math { public int Add(int number1, int number2) { return number1 + number2; } public int Divide(int number1, int number2) { if (number2 <= 0) { throw new DivideByZeroException("Number2 is less or equal to zero"); } return number1 / number2; } } }

项目配置文件

以下是库的project.json文件。

{ "version": "1.0.0-*", "description": "", "authors": [""], "tags": [], "projectUrl": "", "licenseUrl": "", "frameworks": { "dnx451": {}, "dnxcore50": { "dependencies": { "System.Runtime": "4.0.21-beta-23225" } } } }

构建和测试

创建库后,可以执行dnu build命令来验证一切是否正常。完成后,可以编写单元测试文件。

using Xunit; namespace DotNetThoughts.Net.Tests { public class MathTest { [Fact] public void AddTest() { Math m = new Math(); Assert.Equal(4, m.Add(2, 2)); } [Fact] public void DivideTest() { Math m = new Math(); Assert.Equal(4, m.Divide(8, 2)); } } }

单元测试项目配置文件

以下是单元测试项目的project.json文件。

{ "dependencies": { "Math": "", "xunit": "2.1.0-*", "xunit.runner.dnx": "2.1.0-*" }, "commands": { "test": "xunit.runner.dnx" }, "frameworks": { "dnx451": {}, "dnxcore50": {} } }

全局依赖文件

需要在根目录中有一个global.json文件,用于解决依赖关系。

{ "projects": [ "src", "test" ] }

执行测试和生成报告

要获取代码覆盖率,需要OpenCover,可以通过Nuget安装,或者从以下链接下载并安装:。

现在可以使用OpenCover执行测试,可以使用以下命令(为了可读性,添加了换行符)。

C:\Users\[USERNAME]\AppData\Local\Apps\OpenCover\OpenCover.Console.exe -target:"C:\Users\[USERNAME]\.dnx\runtimes\dnx-clr-win-x64.1.0.0-beta8-15618\bin\dnx.exe" -targetargs:"–lib C:\ASPNET\UnitTestDemo\src\Math\bin\Debug\dnx451 test" -output:coverage.xml -register:user -filter:"+[*]* -[xunit*]*"

确保使用的是正确的dnx可执行文件(可以在C:\Users\[USERNAME]\.dnx\runtimes中获取确切的名称和位置),lib位置应指向dnu构建输出位置。一旦成功完成,将在控制台窗口中看到一些输出。

OpenCover执行和报告生成

它还生成coverage.xml文件,可以使用report generator工具生成输出报告,该工具可以从以下链接下载:。

要生成报告,需要执行:

ReportGenerator.exe “-reports:C:\ASPNET\UnitTestDemo\test\UnitTestDemoTests\coverage.xml” “-targetdir:C:\ASPNET\Report”

一旦报告生成,打开报告目录中的index.htm文件。可以找到这样的摘要视图。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485