如何将代码覆盖率阈值设置为TeamCity中的高水位线?

Igo*_*huk 5 teamcity code-coverage teamcity-5.1

我有一个TeamCity构建,可以捕获单元测试的代码覆盖率.我还为构建成功的最小代码覆盖定义了一个环境变量,该工作正常,但我不想手动维护此阈值.我的问题是,是否存在一种方法(在TeamCity之外的某个地方发布代码覆盖率统计数据,然后读取上次成功构建的结果),以便在代码覆盖率提高时自动调整阈值,以确保在不允许的情况下实现稳定的改进倒退:)?

例如,假设当前代码覆盖率为20%(遗留应用程序),并且在编写新的单元测试时,代码覆盖率提高到25%.然后,有人检查新代码而不进行单元测试,代码覆盖率降至24%.我希望TeamCity失败,因为代码覆盖率从25%下降到24%.

qua*_*ana 9

我有一些关于代码覆盖的宠物理论,在我开始回答这个问题之前,我想先解释一下.

首先是一些背景:

  • 有很多类型的代码覆盖,但我只会谈论线覆盖,但你应该能够替换不同的类型.
  • 从问题:"......有人检查新代码而不进行单元测试和代码覆盖率下降......"这与相似内容有关:"一些(重构/消除重复/替换算法)"删除测试的代码和覆盖范围滴".
  • 应该测量覆盖率是运行一组测试的结果.也就是说,不是通过运行应用程序并从外部刺激它.
  • 覆盖率百分比是非常误导的.
    我想到了这一点,你真的只想知道有多少行代码没有被覆盖.
    请参阅我对此答案的评论:确保对新Subversion提交的最小覆盖率
  • 覆盖范围应尽可能高.这个问题谈到"......改善而不允许倒退......"
  • 可以100%覆盖.
    我已经完成了,尽管有一个图书馆.

我有一个理论,就代码覆盖而言,你应该将你的代码分成两个部分:

  1. 所有代码100%覆盖的部门.
  2. 没有代码的部门.

任何一个部门都可以由许多项目构成,但是一个部门的成员应该是文件(假设Java和C#都有源文件),最好是整个文件夹.你可以在第一个分区中拥有一组项目,在第二个分区中拥有另一组项目.

现在,报道缺乏覆盖率只是第二部门的线路数量.

操作模式应该是您正在测试代码,代码只是属于100%覆盖范围.但是,如果你发现一些棘手的代码,你的大脑无法找到测试的方法,你应该重构,以便未测试的位进入第二个分区.或者你可以得到一个脑波,并且能够找到一个将第二个分区提高到0%以上的测试,此时你将代码重构到第一个分区.这意味着每次办理登机手续都会保持理论上的不变性.

现在,回到问题:
不,除了简要介绍JetBrains网站之外,我根本不了解TeamCity ,所以我不知道如何更新覆盖范围,但根据我的理论,它应该是100%或者没什么,你可以为每个项目设置限制吗?如果可以,那么第一个分部的固定限制为100%.
如果您可以获得两个分区,您可能希望使用第二个分区的代码度量标准进行自动更新,逐渐降低更好.


Igo*_*huk 2

这是一个老问题,但我想提一下,现在可以通过“故障条件”功能在较新版本的 TeamCity 中实现这一点。故障条件可以使用常量并与之前生成的指标进行比较。在这种情况下,失败情况将如下所示:

在此输入图像描述