我有一个 TeamCity 构建,可以捕获单元测试的代码覆盖率。我还为构建成功的最小代码覆盖率定义了一个环境变量,它工作正常,但我不喜欢手动维护这个阈值。我的问题是是否有一种方法(除了在 TeamCity 之外的某个地方发布代码覆盖率统计信息,然后读取上次成功构建的结果之外)随着代码覆盖率的提高自动调整阈值,以确保它是一个稳定的改进,而不允许倒退:)?
例如,假设当前代码覆盖率为 20%(遗留应用程序),并且随着新单元测试的编写,代码覆盖率提高到 25%。然后,有人在没有单元测试的情况下 checkin 新代码,代码覆盖率下降到 24%。我希望 TeamCity 构建失败,因为代码覆盖率从 25% 下降到 24%。
最佳答案
我有一些关于代码覆盖率的宠物理论,我想在开始回答问题之前先解释一下。
首先是一些上下文:
我想过这个问题,实际上您只想知道没有涵盖多少行代码。
请参阅我对此答案的评论:Ensure minimal coverage on new Subversion commits
问题是关于“...改进不允许倒退...”
我已经做到了,尽管有图书馆。
我有一个 theory就代码覆盖率而言,您应该将代码分成两个部分:
任何一个部门都可以由多个项目组成,但一个部门的成员应该是文件(鉴于 Java 和 C# 都有源文件),最好是整个文件文件夹。你可以在第一个部门有一套项目,在第二部门有另一套项目。
现在缺少覆盖的报告只是第二部分的行数。
操作模式应该是您正在测试您的代码,并且代码只是属于 100% 覆盖范围。然而,如果你发现一段棘手的代码,你的大脑无法找到测试的方法,你应该重构,以便未测试的位移动到第二部分。或者,您可能会得到一个脑电波,并能够找到将第二个部门提高到 0% 以上的测试,此时您将代码重构为第一个部门。这意味着每次 checkin 都保持我的理论不变性。
现在,回到问题:
不,除了简单地看一下 JetBrains,我对 TeamCity 一无所知。网站,所以我不知道如何更新覆盖率,但根据我的理论,它应该是 100% 或没有,所以你可以为每个项目设置限制吗?如果可以,则 100% 的固定限制适用于第一个分区。
如果您可以得到两个分区,您可能希望使用第二个分区的一行代码度量进行自动更新,越低越好。
关于teamcity - 如何在 TeamCity 中将代码覆盖率阈值设置为高水位线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832974/