如何从Go二进制文件中捕获代码覆盖率?

时间:2017-04-12 23:43:34

标签: go code-coverage

我知道在运行单元测试时可以捕获代码覆盖率指标。但是,我们想知道当我们对二进制本身运行集成测试(复数)时的覆盖范围,例如:

go build
./mybin somefile1
./mybin somefile2
# ... test a bunch more files and input flags

有可能这样做吗?二进制文件只能用于测试目的,因此需要任何编译选项。

1 个答案:

答案 0 :(得分:3)

Go coverage工具仅与测试包一起使用。但并非所有希望都失去了。

如果您可以将集成测试强制转换为go测试框架,那么您应该拥有所需的一切。这不应该听起来那么难。

基本上:

  1. 编写一个在go例程中执行main()函数的测试文件:

    func TestMainApp(t *testing.T) {
        go main()
        // .. then start your integration tests
    }
    
  2. 让您的真实应用在测试中运行,开始您的集成测试 - 可能在exec.Cmd的帮助下。

  3. 收集您的报道统计信息。

  4. 利润。

  5. 这篇文章Go coverage with external tests,从一年前开始,概述了一种类似的方法。