在我们使用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
需要安装 MSTest
插件,在构建后选择 Publish MSTest test result report
选择生成的单元测试文件,Build成功后会在项目界面出现趋势图表
这里需要用到辅助工具 TrxerConsole, 很遗憾该工具目前不提供全局工具下载方式,只能手动下载。注意不要直接下载Release页面的exe文件,使用时会一直出错,建议直接下载源码在本地编译使用
cmd
调用命令
TrxerConsole.exe D:\Solfware\Jenkins\workspace\Code_Unit_Test_Result\TestResults\TestResult_38.trx
参考以下资料
Visual Studio Coverage Tools
需要在在vstest.console
命令中添加/EnableCodeCoverage
参数,最后会在TestResult文件夹下的某个文件夹中出现xxx.coverage
文件
注意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文件
可以先把 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格式覆盖率文件
安装 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\"
默认在Jenkins
中打开html
会丢失格式,所以我们需要对其进行转换,需要这个插件
HTML Publisher
可以正常显示Jenkins workspace中各种html文件
关于HTML Publisher
如何配置还是比较简单的,网上资料很多
HTML Publisher
因为Jenkins的安全策略禁止了某些css样式,所以有时还是无法正常显示,要解决这个问题,需要转到 Manage Jenkins
->Script Console
,在脚本里面加入这句话
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
之后运行脚本,然后再次Build
之后就可以看到正常的html
显示(注意,这个脚本有时效性,下次再登录时还得重新输入一遍)