【问题标题】:How can I fail the build based on based on chutzpah coverage?如何基于 chutzpah 覆盖率使构建失败?
【发布时间】:2015-05-20 14:24:26
【问题描述】:

我觉得我已经尝试了所有我们目前拥有的解决方案,在签入 TFS 后,我们会强制在 CruiseControl.net 上构建。在我们的解决方案中,我们使用 Chutzpah JS 测试适配器。如果任何 JS 测试失败,我们能够成功地使用 Chutzpah.console.exe 使构建失败,现在我们希望在覆盖范围内使构建失败。我找不到任何方法让 Chutzpah.console.exe 输出覆盖到它生成的 XML 文件。

我想我可以通过编写自己的 .xsl 来解析 _Chutzpha.coverage.html 来解决这个问题。我打算使用 CruiseControl 已经可以解释的 junit 格式将其转换为 xml。因为我只关心构建失败,所以我要让我的转换输出看起来像更多失败的单元测试。在 xsl 我会设置属性失败> 0

<?xml version="1.0" encoding="UTF-8" ?>
<testsuites>
  <testsuite name="c:\build\jstest\jstest\tests\TestSpec2.js" tests="1" failures="1">
    <testcase name="Coverage" time="46" />
  </testsuite>
</testsuites>

但我真的不能,因为传入的 html 有自结束标签。

所以,现在我只想运行 Chutzpah.Console.exe 并将输出通过管道传输到一个文件,因为控制台输出确实会显示总平均覆盖率,读取该值,如果低于阈值则构建失败。

还有更好的选择吗?我错过了什么吗?我对 Cruisecontrol.net 了解不多

【问题讨论】:

  • Chutzpah 有一个名为 CodeCoverageSuccessPercentage (github.com/mmanela/chutzpah/wiki/Chutzpah.json-Settings-File) 的设置,它决定了 chutzpah 认为成功的行覆盖百分比。尽管如此,它目前不会导致非零状态代码。进行这种更改会解决您的问题吗?
  • 我认为可能。我真的不太了解 chutzpah 和 Cruisecontrol.net 是如何交互的
  • 其实这正是我们所需要的。如果覆盖率像单元测试数据一样输出到 xml 文件,我们可以编写一个 xsl 文件来将其转换为我们需要的巡航控制。

标签: build-process cruisecontrol.net chutzpah


【解决方案1】:

我认为输出到文件,然后解析是剩下的唯一选择。 可惜覆盖信息不在xml文件中:-(

这实际上是 Chutzpah 的问题,而不是 CCNet, 将 CCNet 视为升级的任务调度程序,它有很多选项,但依赖于它从被调用程序接收的输入。如果那个人不能提供数据,你就会被这些变通方法困住:-(

【讨论】:

    【解决方案2】:

    还有另一种选择,但它可能更像是一次旅行,而不是您感兴趣的开始。 Sonarqube 是一个基于服务器的工具,用于管理和分析代码质量。它有一个名为“Build Breaker”的插件,如果不满足任何数量的代码质量指标(包括单元测试覆盖率),它允许您使构建失败。就像我说的,这有点牵扯,因为你必须设置一个服务器并学习这个新工具,但无论如何拥有它是件好事。

    我将 Chutzpah 与 /lcov 命令行选项一起使用,以便它将覆盖范围输出到文件中,然后告诉声纳在该项目的声纳配置中找到该文件中的覆盖范围。然后,您在 Cruise control.net 构建过程中添加一个步骤来运行声纳分析,如果您正确配置了构建中断插件,如果覆盖范围不在您指定的级别,它将无法在巡航控制中构建。

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2017-06-13
      • 2018-04-14
      • 2018-11-22
      • 1970-01-01
      • 2014-12-18
      • 2022-07-26
      • 1970-01-01
      • 2011-09-23
      相关资源
      最近更新 更多