当前位置: 首页 > 面试题库 >

如果覆盖率低于一定百分比,则单元测试失败

鲁弘厚
2023-03-14
问题内容

我制作一个可以执行的makefile go test -covermake unit_tests如果coverage小于X,是否有可能使命令失败?我该怎么办?


问题答案:

您可以TestMain在测试中使用该功能。TestMain可以充当测试的自定义入口点,然后您可以调用testing.Coverage()以获取对覆盖率统计信息的访问。

因此,例如,如果您希望失败率低于80%,则可以将其添加到软件包的测试文件之一中:

func TestMain(m *testing.M) {
    // call flag.Parse() here if TestMain uses flags
    rc := m.Run()

    // rc 0 means we've passed, 
    // and CoverMode will be non empty if run with -cover
    if rc == 0 && testing.CoverMode() != "" {
        c := testing.Coverage()
        if c < 0.8 {
            fmt.Println("Tests passed but coverage failed at", c)
            rc = -1
        }
    }
    os.Exit(rc)
}

然后go test -cover将调用此入口点,您将失败:

PASS
coverage: 63.0% of statements
Tests passed but coverage failed at 0.5862068965517241
exit status 255
FAIL    github.com/xxxx/xxx 0.026s

请注意,testing.Coverage()返回的数字低于测试报告的数字。我看过代码,该函数计算覆盖率的方式与测试内部报告的方式不同。我不确定哪个更“正确”。



 类似资料:
  • 新的一年 之前因为上家公司的经营出了问题,年前的大裁员,过了一个漫长的春节。 之后加入了新公司,然后正好赶上一个很紧急的项目,忙成狗,因此好久没更新文章了。 不过,我又回来啦! 前言 自动化测试,我们将使用karma和nightmare,内容会包括: 单元测试 e2e测试(放下一篇文章) 其实,单元测试一般用在写公共包的时候,比如通用的js函数库,通用的UI组件库。基本不太会在做业务项目的时候还使

  • 我可以在声纳获得单位测试覆盖率通过使用Jacoco工具的代码覆盖率,并使用其报告在声纳属性文件为'sonar.jacoco.report路径=.../Reports/report.exec'。如何通过使用RAD的默认插件获得SONAR中的单元测试覆盖率,该插件以. coveragedata、. Analysis和. html格式生成报告?

  • 问题内容: 我从声纳休息API获取单元测试覆盖率百分比指标。 如果构建低于定义值,如何使构建失败? 问题答案: 提供该功能。 定义JaCoCo插件使用配置规则的和: 多种选择 支持的选项有: 线 科 指令 复杂 方法 类 我相信您可以进行一般检查(例如,验证整个项目的覆盖率至少为0.80)。 指令示例-整体指令覆盖率80% 本示例要求整个指令的覆盖率为80%,并且不得错过任何课程: 失败消息 如果

  • 是否有人能够从Maven Build获得JaCoCo中JMockit和Powermock单元测试的复盖范围? 我有一个Powermock单元测试的现有测试集,我希望逐步将其迁移到JMockit。但是我需要能够在一个报告中看到所有单元测试的测试覆盖范围,最好是在Sonar中。 通过将JaCoCo置于“脱机”模式,我确实使JMockit和Powermock测试与Surefire/JaCoCo一起运行(

  • 我正在将ANT构建转换为Maven。我不用声纳。 在Maven中,Jacoco似乎并没有报告单元测试本身的覆盖率,而ANT报告。我也一直在尝试为我的Maven build获得这个,但是我没有找到任何东西。 似乎我应该添加一个

  • 11.3. 测试覆盖率 就其性质而言,测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过:“测试能证明缺陷存在,而无法证明没有缺陷。”再多的测试也不能证明一个程序没有BUG。在最好的情况下,测试可以增强我们的信心:代码在很多重要场景下是可以正常工作的。 对待测程序执行的测试的程度称为测试的覆盖率。测试覆盖率并不能量化——即使最简单的程序的动态也是难以精确测量的——但是有启发式方法