公司使用的是.net core,单元测试框架使用的xunit,想要统计出单元测试的覆盖率。
demo使用的是coverlet,针对没有使用rabbit mq的工程,可以准备统计出覆盖率。
预先工作
1、工程中,引入coverlet.msbuild包,引入方式,如截图
右键,管理NuGet程序包,然后输入coverlet.msbuild,进行安装。
2、在服务器上,全局安装
dotnet tool install --global coverlet.console
3、下载sonar scanner msbuild 的.net core版本,放到工程中,并修改相关配置文件
Jenkins配置如下
带coverlet覆盖率的方式,运行测试项目
dotnet test D:\JenkinsWorkspace\workspace\test\coverage(xunit)\XUnitTestProject1\XUnitTestProject1.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude=\"[xunit.runner.*]*\"
sonar scanner运行,指定覆盖率的文件所在
dotnet D:\JenkinsWorkspace\workspace\test\coverage(xunit)\sonar-scanner-msbuild\SonarScanner.MSBuild.dll begin /k:fugailv2 /n:FUGAILV2 /d:sonar.host.url=http://192.168.200.152:9000 /d:sonar.login=admin /d:sonar.password=admin /d:sonar.cs.opencover.reportsPaths=D:\JenkinsWorkspace\workspace\test\coverage(xunit)\XUnitTestProject1\coverage.opencover.xml /d:sonar.coverage.exclusions=[**Tests*.cs,coverage.opencover.xml]
sonar scanner运行结束
dotnet build
dotnet D:\JenkinsWorkspace\workspace\test\coverage(xunit)\sonar-scanner-msbuild\SonarScanner.MSBuild.dll end /d:sonar.login=admin /d:sonar.password=admin
所使用的示例项目见百度网盘地址
https://pan.baidu.com/s/1Soxw-dW7r-w09kfBXoNHnw