我有一些关于代码覆盖率的宠物理论,在我开始回答这个问题之前,我想先解释一下。
首先是一些背景:
- 代码覆盖率有很多种,但我只讨论行覆盖率,但你应该可以替换为不同的类型。
- 从问题:“......有人在没有单元测试的情况下检查新代码并且代码覆盖率下降......”这与类似的问题有关:“有人(重构/消除重复/替换算法并)删除测试代码和覆盖率滴。”
- 应根据运行一套测试的结果来衡量覆盖率。也就是说,不是通过运行应用程序并从外部刺激它。
- 覆盖率是非常具有误导性的。
我对此进行了思考,实际上您只想知道未涵盖多少行代码。
请参阅我对此答案的评论:确保对新的 Subversion 提交的覆盖最小
- 覆盖率应尽可能高。这个问题谈到“......在不允许倒退的情况下进行改进......”
- 100% 覆盖是可能的。
我已经做到了,尽管有一个图书馆。
我有一个理论,就代码覆盖率而言,您应该将代码分为两个部分:
- 100% 覆盖所有代码的部门。
- 没有代码被覆盖的部门。
任何一个部门都可以由多个项目组成,但部门的成员应该是文件(假设 Java 和 C# 都有源文件),最好是整个文件夹的文件。您可以在第一部门拥有一组项目,在第二部门拥有另一组项目。
现在缺乏覆盖的报告只是第二部分的行数。
操作模式应该是您正在测试您的代码,并且代码只是属于 100% 覆盖范围。但是,如果您发现了一段您的大脑无法测试的棘手代码,您应该进行重构,以便将未测试的位移动到第二分区。或者,您可能会得到一个脑电波,并且能够找到一个将第二部分提高到 0% 以上的测试,此时您将代码重构到第一部分。这意味着每次签到都保持我的理论不变性。
现在,回到问题:
不,除了简要查看JetBrains网站外,我根本不了解 TeamCity,所以我不知道如何更新覆盖范围,但根据我的理论,它应该是 100% 或什么都没有,所以你可以为每个项目设置限制吗?如果可以,那么 100% 的固定限制适用于第一师。
如果您可以获得两个部门,您可能希望使用第二部门的代码行数来进行自动更新,逐渐降低更好。