unit-testing - golang 中的测试模式不记录覆盖率
问题描述
为了测试可以完成os.Exit(1)
或类似的功能,我正在使用这种模式:
func TestFoo(t *testing.T) {
if os.Getenv("TEST_USAGE") == "1" {
Foo()
return
}
cmd := exec.Command(os.Args[0], "-test.run=TestUsage")
cmd.Env = append(os.Environ(), "TEST_USAGE=1")
err := cmd.Run()
if e, ok := err.(*exec.ExitError); ok && !e.Success() {
fmt.Println("Foo test passed")
return
}
t.Errorf("Test ran with err %v, want exit status 1", err)
}
测试本身运行良好,但如果我使用或生成 HTML 覆盖率报告,则测试的代码不会被记录为被覆盖。-cover
有没有办法来解决这个问题?我已经看到了使用外部软件包的建议,但想知道是否有办法使用内置软件包来解决这个问题?
解决方案
推荐阅读
- asterisk - 没有用于扩展的应用程序“实时”(默认,1234、2)
- json - 如何在ajax中将字符串保持为原始格式?
- json - JSON 断言 - 断言多个响应值
- node.js - 如何使用数据库(mongodb)使我的代码更简单?
- android-studio - how to get unique phone number by using hashmap in android
- vba - Select * From 语句有问题
- vb.net - 为什么CType会抛出无效日期异常
- angularjs - 从 angularJS 中的 JSON 获取数据
- ansible - 在多委托主机上进行异步多任务
- c# - 如何使用 imapclient 在 C# 中从 gmail 中读取电子邮件时跳过 & 字符