我是棕地应用程序开发的忠实粉丝。毫无疑问,这是一本很棒的书,我会向所有开发者推荐它。我在这里是因为我在书中谈到了代码覆盖率。在我的新店,我们使用 Team City 进行自动化构建/持续集成,构建完成大约需要 40 分钟。布朗菲尔德的书谈到了无摩擦开发以及我们如何减轻开发人员必须承受的共同负担。这是我在第 130 页读到的内容。
“代码覆盖率:一个价格的两个进程?从清单 5.2 中的示例目标中可以看到,您最终会得到两个输出文件:一个带有测试结果,一个带有代码覆盖结果。这是因为您实际上在此任务期间执行您的测试。
如果您正在运行代码覆盖任务,从技术上讲,您不需要在单独的任务中执行测试。出于这个原因,许多团队将用自动代码覆盖任务代替他们的测试任务,本质上是在 CI 过程中执行这两个操作。CI 服务器将编译代码,对其进行测试,并在每次签入时生成代码覆盖率统计信息。
尽管这种方法在概念上没有任何问题,但请注意一些缺点。首先,生成代码覆盖率统计信息会产生开销。当有很多测试时,这种开销可能足够大,以至于以运行时间较长的自动构建脚本的形式引起摩擦。请记住,主构建脚本应尽可能快地运行,以鼓励团队成员经常运行它。如果运行时间过长,您可能会发现开发人员正在寻找解决方法。
由于这些原因,我们建议将代码覆盖任务与构建脚本的默认任务分开执行。它应该定期运行,可能作为构建文件中的单独计划任务,每两周甚至每月执行一次,但我们认为该指标没有足够的好处来保证在每次检查时执行它的额外开销 -在。”
这与我当前商店的做法相反,我们每次构建都执行 NCover。我想去找我的领导并要求我们不要这样做,但我能做的最好的就是告诉他“这就是布朗菲尔德书上所说的”。我认为这还不够好。所以我依靠你们来向我介绍你们在这个话题上的个人经历和建议。谢谢。