首页 > 解决方案 > 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

有没有办法来解决这个问题?我已经看到了使用外部软件包的建议,但想知道是否有办法使用内置软件包来解决这个问题?

标签: unit-testinggotestingcode-coverage

解决方案


推荐阅读