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

标签 teamcity code-coverage teamcity-5.1

我有一个 TeamCity 构建,可以捕获单元测试的代码覆盖率。我还为构建成功的最小代码覆盖率定义了一个环境变量,它工作正常,但我不喜欢手动维护这个阈值。我的问题是是否有一种方法(除了在 TeamCity 之外的某个地方发布代码覆盖率统计信息,然后读取上次成功构建的结果之外)随着代码覆盖率的提高自动调整阈值,以确保它是一个稳定的改进,而不允许倒退:)?

例如,假设当前代码覆盖率为 20%(遗留应用程序),并且随着新单元测试的编写,代码覆盖率提高到 25%。然后,有人在没有单元测试的情况下 checkin 新代码,代码覆盖率下降到 24%。我希望 TeamCity 构建失败,因为代码覆盖率从 25% 下降到 24%。

最佳答案

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

首先是一些上下文:

  • 有很多种Code coverage ,但我只会谈论线路覆盖率,但您应该能够替换为不同的类型。
  • 来自问题:“......有人在没有单元测试的情况下检查新代码并且代码覆盖率下降......”与类似的相关:“有人(重构/消除重复/替换算法和)删除测试代码和覆盖率滴。”
  • 覆盖率应该作为运行一套测试的结果来衡量。也就是说,不是通过运行应用程序并从外部刺激它。
  • 覆盖率作为百分比非常具有误导性。
    我想过这个问题,实际上您只想知道没有涵盖多少行代码。
    请参阅我对此答案的评论:Ensure minimal coverage on new Subversion commits
  • 覆盖率应尽可能高。
    问题是关于“...改进不允许倒退...”
  • 100% coverage is possible .
    我已经做到了,尽管有图书馆。

  • 我有一个 theory就代码覆盖率而言,您应该将代码分成两个部分:
  • 100% 覆盖所有代码的部门。
  • 不涉及代码的部门。

  • 任何一个部门都可以由多个项目组成,但一个部门的成员应该是文件(鉴于 Java 和 C# 都有源文件),最好是整个文件文件夹。你可以在第一个部门有一套项目,在第二部门有另一套项目。

    现在缺少覆盖的报告只是第二部分的行数。

    操作模式应该是您正在测试您的代码,并且代码只是属于 100% 覆盖范围。然而,如果你发现一段棘手的代码,你的大脑无法找到测试的方法,你应该重构,以便未测试的位移动到第二部分。或者,您可能会得到一个脑电波,并能够找到将第二个部门提高到 0% 以上的测试,此时您将代码重构为第一个部门。这意味着每次 checkin 都保持我的理论不变性。

    现在,回到问题:
    不,除了简单地看一下 JetBrains,我对 TeamCity 一无所知。网站,所以我不知道如何更新覆盖率,但根据我的理论,它应该是 100% 或没有,所以你可以为每个项目设置限制吗?如果可以,则 100% 的固定限制适用于第一个分区。
    如果您可以得到两个分区,您可能希望使用第二个分区的一行代码度量进行自动更新,越低越好。

    关于teamcity - 如何在 TeamCity 中将代码覆盖率阈值设置为高水位线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832974/

    相关文章:

    deployment - WebDeploy:合并内容

    Teamcity Max OS X 代理 - 不兼容的运行程序 : Command Line

    .net - 如何使用从 .net 解决方案生成的 AssemblyInfo Patcher 更改 TeamCity 中 DLL 的文件/产品版本?

    php - yii phpunit 测试覆盖率 View

    teamcity - 排除 teamcity 工件中的文件类型

    security - 如何通过 Web Deploy 服务保护 TeamCity 部署?

    c# - 如何向 SonarQube 添加单元测试覆盖率?使用 Azure-DevOps 管道

    regex - 我在我的 CI/CD 设置中找不到 Gitlab 的测试覆盖解析设置

    visual-studio-2008 - TeamCity 命令行构建运行程序 : How to make the build fail?