.net core跨平台代码覆盖分析
Contents
一个常见的CI流程,build -> unit test -> coverage analysis -> package。.net core实现了跨平台,但由于工具链缺失的原因,test和code coverage只能在Windows下完成。最近工作上需要配置,发现工具链已经补充完成,基本能工作了。现把配置流程记录下来。
准备试验项目
准备一个简单的计算器library项目和对应的xunit项目:
|
|
验证build和test正常工作:
|
|
|
|
如有多个测试项目,可以另建一个*.Test.sln文件,把测试项目加进去,然后对改sln执行测试。
输出测试结果
dotnet test
的默认输出是console,如果需要把测试结果publish到Jenkins等CI系统,需要先把测试结果保存下来。Logger Extensions项目提供了此功能,通过指定test的logger参数,把测试结果记录到文件中,目前支持AppVeyor, NUnit和xUnit3三种格式。
下面以xUnit Logger为例:
- 为测试项目添加XunitLogger
|
|
- 执行测试的时候加入logger参数
|
|
测试结果保存到测试项目的TestResults文件夹下。
统计代码覆盖率
.Net以往开源的coverage选择貌似只有OpenCover一个,Windows only。今年出现了一个新的选择,Coverlet,支持跨平台,(目标)支持多种格式的report。
使用方法也很简单:
- 为测试项目添加coverlet
|
|
- 执行测试的时候加入logger参数
|
|
生成代码覆盖报告
通常和OpenCover一起配合使用的是ReportGenerator,目前alpha版已经支持跨平台了,可以直接选用。
使用方法如下:
- 为测试项目添加ReportGenerator
|
|
注:这里纯粹是为了dotnet restore的时候会下载ReportGenerator而已,代码并不会引用。
- 生成报告:
|
|
可以看到覆盖率报告生成到了artifacts/coverage下。
Author woodylic
LastMod 2018-04-28