【Jenkins】.Net Core单元测试报告和代码覆盖率

目录

  • 一、单元测试报告
    • 1. 使用logger参数
    • 2. 测试结果趋势图
    • 3. 将trx文件转成html文件
  • 二、代码覆盖率
    • 1. coverage文件转xml文件
    • 2. 将coveragexml文件转换为html文件
  • 三、发布html文件
    • 1. HTML Publisher插件
    • 2. 问题


一、单元测试报告

1. 使用logger参数

在我们使用vstext.console运行单元测试命令,加入/logger参数

"vstest.console.exe" "MyJenkins\MyJenkinsTests\bin\x64\Debug\netcoreapp3.1\MyJenkinsTests.dll" /logger:trx;LogFileName=TestResult_38.trx /EnableCodeCoverage

关于/logger参数

/logger:trx 为固定写法
;LogFileName=TestResult_38.trx 为输出的文件名,不能修改文件路径

关于相对路径

MyJenkins\MyJenkinsTests\bin\x64\Debug\netcoreapp3.1\MyJenkinsTests.dll Jenkins会自动找到当前的工作目录,这是正确的写法
MyJenkins\MyJenkinsTests\bin\x64\Debug\netcoreapp3.1\MyJenkinsTests.dll Jenkins会以为是在盘符的根目录下,比如会以为是 D:\MyJenkins\MyJenkinsTests\bin\x64\Debug\netcoreapp3.1\MyJenkinsTests.dll

【Jenkins】.Net Core单元测试报告和代码覆盖率_第1张图片

2. 测试结果趋势图

需要安装 MSTest 插件,在构建后选择 Publish MSTest test result report
在这里插入图片描述
【Jenkins】.Net Core单元测试报告和代码覆盖率_第2张图片
选择生成的单元测试文件,Build成功后会在项目界面出现趋势图表
【Jenkins】.Net Core单元测试报告和代码覆盖率_第3张图片
【Jenkins】.Net Core单元测试报告和代码覆盖率_第4张图片

3. 将trx文件转成html文件

这里需要用到辅助工具 TrxerConsole, 很遗憾该工具目前不提供全局工具下载方式,只能手动下载。注意不要直接下载Release页面的exe文件,使用时会一直出错,建议直接下载源码在本地编译使用

cmd调用命令

TrxerConsole.exe D:\Solfware\Jenkins\workspace\Code_Unit_Test_Result\TestResults\TestResult_38.trx

会在trx文件同目录下出现同名的html文件
【Jenkins】.Net Core单元测试报告和代码覆盖率_第5张图片

二、代码覆盖率

参考以下资料

Visual Studio Coverage Tools

需要在在vstest.console命令中添加/EnableCodeCoverage参数,最后会在TestResult文件夹下的某个文件夹中出现xxx.coverage文件
在这里插入图片描述

1. coverage文件转xml文件

注意xxx.coverage文件只能被Visual Studio打开,所以需要将其转换为xml格式。这里需要用到VS自带的CodeCoverage.exe工具,一般它的目录如下

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe

使用方法为首先需要collect到对应的测试结果dll,然后analyze输出.coveragexml文件,注意这里的.coveragexml其实也是xml文件格式的一种,但是VS只能打开.coverage文件,打不开.coveragexml文件。这里为了方便演示,先准备好测试输出的dll.coverge文件
【Jenkins】.Net Core单元测试报告和代码覆盖率_第6张图片

可以先把 CodeCoverage.exed的路径加到Path环境变量中

cd /d C:\Users\chao9441\Desktop\Tmp\coverage
CodeCoverage.exe collect /output:test.coverage UnitTest.dll
CodeCoverage.exe analyze /output:test.coveragexml test.coverage

这样在同目录下就会出现新的 xml格式覆盖率文件

【Jenkins】.Net Core单元测试报告和代码覆盖率_第7张图片

2. 将coveragexml文件转换为html文件

安装 ReportGenerator 全局工具,这样可以直接在cmd中调用

dotnet tool install --global dotnet-reportgenerator-globaltool --version 4.5.2

cmd调用一下命令生成html文件, 注意targetdir对应的是目录,这里我们可以新建一个hmtl目录专门存放输出文件

cd /d C:\Users\chao9441\Desktop\Tmp\coverage
reportgenerator "-reports:test.coveragexml" "-targetdir:C:\Users\chao9441\Desktop\Tmp\coverage\html\"

html文件结果
【Jenkins】.Net Core单元测试报告和代码覆盖率_第8张图片

三、发布html文件

1. HTML Publisher插件

默认在Jenkins中打开html会丢失格式,所以我们需要对其进行转换,需要这个插件

HTML Publisher
可以正常显示Jenkins workspace中各种html文件

【Jenkins】.Net Core单元测试报告和代码覆盖率_第9张图片
【Jenkins】.Net Core单元测试报告和代码覆盖率_第10张图片

关于HTML Publisher如何配置还是比较简单的,网上资料很多

2. 问题

HTML Publisher因为Jenkins的安全策略禁止了某些css样式,所以有时还是无法正常显示,要解决这个问题,需要转到 Manage Jenkins->Script Console,在脚本里面加入这句话

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

之后运行脚本,然后再次Build之后就可以看到正常的html显示(注意,这个脚本有时效性,下次再登录时还得重新输入一遍)

你可能感兴趣的:(Jenkins)