【发布时间】:2011-09-23 19:21:47
【问题描述】:
我是棕地应用程序开发的忠实粉丝。毫无疑问,这是一本很棒的书,我会向所有开发者推荐它。我在这里是因为我在书中谈到了代码覆盖率。在我的新商店,我们使用 Team City 进行自动化构建/持续集成,构建完成大约需要 40 分钟。布朗菲尔德的书谈到了无摩擦开发以及我们如何减轻开发人员必须承受的共同负担。这是我在第 130 页读到的内容..
“代码覆盖率:一个价格的两个过程? 从清单 5.2 中的示例目标可以看出,您最终会得到两个输出文件: 一份是测试结果,一份是代码覆盖率结果。这是因为你 实际上是在这个任务期间执行你的测试。
如果您正在运行,从技术上讲,您不需要在单独的任务中执行测试 代码覆盖任务。出于这个原因,许多团队将替代自动化 测试任务的代码覆盖任务,本质上是在 CI 过程。 CI 服务器将编译代码、测试它并生成代码覆盖率 每次签到的统计信息。
虽然这种方法在概念上没有任何问题,但请注意一些 缺点。首先,生成代码覆盖率统计信息会产生开销。什么时候 有很多测试,这种开销可能足以引起摩擦 运行时间较长的自动构建脚本的形式。请记住,主要构建 脚本应尽可能快地运行,以鼓励团队成员经常运行它。如果 运行时间太长,您可能会发现开发人员正在寻找解决方法。
出于这些原因,我们建议单独执行代码覆盖任务 构建脚本的默认任务。它应该定期运行,可能作为构建文件中的一个单独的计划任务,每两周甚至每月执行一次,但是我们 认为该指标没有足够的好处来保证拥有的额外开销 它在每次签到时执行。”
这与我当前商店的做法相反,我们每次构建都执行 NCover。我想去找我的领导并要求我们不要这样做,但我能做的最好的就是告诉他“这就是布朗菲尔德书上所说的”。我认为这还不够好。所以我依靠你们来向我介绍你们在这个话题上的个人经历和建议。谢谢。
【问题讨论】:
-
为什么要在每次构建时停止 NCover?
-
我为什么要停止它?我并不是在提倡我想阻止它。这就是我问这个问题的原因。老实说,我不确定。我只知道有时会一样。我想知道锻炼是否是一种有效的权衡。
-
你怎么知道它会节省一些时间? NCover 应该是您的测试的并发操作,增加很少的开销。
-
@Nick 在这种情况下我们都是假设的。这里真正需要发生的是让我弄清楚 NCover 需要多长时间。但是你说“应该”就好像你也不确定。仍然需要生成统计信息。发生在什么级别的并行性?我不知道。你?它肯定会与你有多少测试成正比。
-
我并没有真正假设任何事情——我只是在问问题。我说 NCover “应该”是一个并发操作,因为这是最有效地设置(并且通常)的方式,但我显然对您的设置没有任何特别的见解 - 可能您在运行测试后再次连续运行它,这将是非常低效的。
标签: continuous-integration teamcity code-analysis code-metrics ncover