安装Jenkins和创建任务这些操作网上一搜一大把,这里就没必要写了,直接就开始编译、单元测试,覆盖,git提交触发构建,构建失败发送给提交人邮件。

因为项目比较复杂,为了懒省事我直接在CI服务器上安装了visual studio 2017 (主要就是为了那个VsDevCmd.bat)。

这里呢为了保证CI能够正常编译、执行单元测试、覆盖率,我们对.net 项目做了如下约定:

1.单元测试一般使用xunit 进行编写。

2.Mock框架。

对于core 项目需要安装一下几个NuGet包

1.coverlet.msbuild  覆盖率

2.XunitXml.TestLogger xml 格式记录器

说完一些前置条件,现在开始正式的编译,执行单元测试,覆盖率

对于.net framework 项目我们的编译肯定是使用MSBUILD

第一条命令是在当前的命令行窗口创建一个MSBuild 指令,然后 进行Nuget包还原,编译项目 ,后面的参数可以自行修改。

第二条指令是进行单元测试与覆盖率,因为执行覆盖率时要执行单元测试,所以我就把两条指令放在了一起,避免不必要的损耗。

生成覆盖率报告我使用的工具是OpenCover ,OpenCover 生成的报告是xml格式,Jenkins 无法识别(也可能是我不会折腾),所有我又使用了ReportGenerator工具对xml 进行了一个转换,把它转换成html格式。然后用Jenkins的HTML 报表插件展示出来。

对于单元测试报告,因为Jenkins有相关的插件,所以直接就用xunit生成的xml格式的测试报告就可以了。

这里说明一下,在执行单元测试时我使用的xunit.console.exe 这个命令行工具。没有把执行单元测试的步骤放入到MSBuild任务中去,有兴趣的人可以自行研究。

好了到这里呢就完成了.net framework 项目的编译、单元测试、覆盖率 环节。

对于Core项目,它的编译我使用的dotnet build ***.sln 方式,单元测试使用的是dotnet test ***.csproj 。之前说过对于core的覆盖率我使用的是coverlet.msbuild 这个MSBuild 扩展命令工具包。所以在执行单元测试的同时就可以生成覆盖率的报告。对于xunit的单元测试结果,我使用的XunitXml.TestLogger 这个MSBuild 扩展命令工具包。

具体的命令如下:

这一个dotnet test命令就完成了所有的工作,同样我最终还是使用ReportGenerator这个工具将覆盖率报告转换成HTML格式。

最终的展示结果:

上图是构建后的总览图。

上图是覆盖率结果报表。

单元测试报表

对于git提交后触发构建,在git仓库为项目添加一个钩子即可。

最新文章

  1. 敏捷转型历程 - Sprint3 一团糟的演示会
  2. C++函数指针总结
  3. 旧文备份:CANopen协议PDO的几种传输方式
  4. 软件产品案例分析----K米app
  5. 3到6年的.NETer应该掌握哪些知识?
  6. mysql 全文搜索的FULLTEXT
  7. 重力感应操控(unity iphone)
  8. Hadoop MapReduce概念学习系列之mr程序组件全貌(二十)
  9. eclipse 配置git ssh登录
  10. windows下创建.htaccess文件之讲解
  11. Java序列化之transient和serialVersionUID的使用
  12. 基于C#的SolidWorks插件开发(2)--创建插件
  13. 快速打出System.out.println("");
  14. 重写 libev 的 EV_WIN32_HANDLE_TO_FD
  15. HDU 3068 最长回文 Manacher算法
  16. C#跨窗体调用控件(委托回调函数使用例子)
  17. QT信号和槽
  18. SecureCRT8.0设置语法高亮
  19. openstack-ocata-环境准备1
  20. Go并发示例-Pool

热门文章

  1. NOIP赛前模拟20171027总结
  2. docker 查询或获取私有仓库(registry)中的镜像
  3. 【Visual Studio】error C2220: 警告被视为错误 - 没有生成“object”文件 (转)
  4. 04深入理解C指针之---指针优缺点
  5. sync fsync fdatasync
  6. AC日记——[福利]可持久化线段树 cogs 2554
  7. Vijos——P1137 组合数
  8. Socks5代理Socks5 Proxy
  9. Codeforces Round #317 [AimFund Thanks-Round] (Div. 2) Minimization dp
  10. Ural 1780 Gray Code 乱搞暴力