Photo :.NET单元测试的艺术
文 | Edison Zhou
这几天陆陆续续更新了UnitTest in .NET这个系列的文章,现将其总结成一个小目录。此外,特别推荐阅读Roy Osherove的《单元测试的艺术》一书,此文也是该书的精华内容的学习笔记总结。
文章目录
Part 1.基本概念及第一个单元测试
Part 2.使用存根破除依赖
Part 3.使用模拟对象进行交互测试
Part 4.使用模拟框架简化测试代码
Part 5.高效管理与组织单元测试
一些补充
此系列主要使用的是NUnit + NSub来介绍的,但你也可以用MSTest 或者 xUnit 来实现,模拟框架的话你也可以用同样流行的Moq来做。但是,此类模拟框架都是以模拟接口为目标来设计的,无法模拟静态方法等高级对象,如果你所维护或开发的项目是一个遗留系统,即所谓很多的遗留代码(Legacy Code)的系统,那么建议最好使用一些比较高级的模拟框架,比如JustMock(付费版),它可以模拟静态方法、密封类、私有成员、MsCorLib程序集的成员(比如DateTime.Now)甚至是Silverlight项目代码。
有关JustMock框架的介绍,请移步这里:https://www.telerik.com/products/mocking.aspx
此外,我也强烈建议大家结合Jenkins等CI工具把单元测试引入持续集成的构建之中,这样可以最大限度的发挥单元测试在开发测试过程中的作用。
在Jenkins中提供了Pipeline方便地进行构建流水线,在我的实践中主要是通过开发人员的每一次Check-In到git,触发一个Webhook到Jenkins中从而使持续集成构建任务开始执行:
从图中可以看出,其经历了中台微服务的编译和单元测试 及 BFF(Backend for Frontend)服务的编译和单元测试来保障代码质量,当然前提是有足够的单元测试作为保护层,这也需要开发人员花时间为每个服务接口(或者高价值的部分)写单元测试!
如果构建任务中有一个Stage失败了,那么此构建任务则认为失败,会给开发团队和Leader发送邮件告警:
此外,我们还使用了一个用于大屏显示构建状态的插件—Build Monitor,在我们工作区后方的电视屏上会显示各个构建任务的实时状态,如果有任务失败了会变为红色:
并且,Build Monitor还会将推进不可靠代码的提交者名字(git账号名字)显示在屏幕中的构建任务里边,方便大家查看谁的锅:
参考资料
Roy Osherove 著,金迎 译,《单元测试的艺术(第2版)》
Edison Zhou,《基于Jenkins的开发测试全流程持续集成实践》
Edison Zhou,《基于Jenkins Pipeline的ASP.NET Core持续集成实践》
The End
「 码字不易,也希望各位看官看完觉得还行就在本文右下方顺手点个“在看”,那就是对我最大的鼓励!如果觉得很好,也可以转发给你的朋友,让更多人看到,独乐乐不如众乐乐,是吧?」
往期精彩回顾
.NET Core on K8S学习与实践系列文章索引目录
.NET Core 微服务学习与实践系列文章索引目录
【资料】2019 .NET China Conf 大会资料下载
【视频】2019 .NET China Conf 大会视频发布
2019 .NET China Conf 路一直都在,社区会更好
基于Jenkins的开发测试全流程持续集成实践
基于Jenkins Pipeline的.NET Core持续集成实践
【导读】我读经典,心旷神怡 - 经典书籍读后感汇总
【导读】我的诗和远方 - 也读唐诗与旅游游记汇总
点个【在看】如何?