我制作了一个执行的 makefilego test -cover
。是否有可能失败make unit_tests
如果覆盖范围低于 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)
}
Then 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()
回报低于测试报告。我查看了代码,该函数计算其覆盖范围的方式与测试的内部报告不同。我不确定哪个更“正确”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)