小编典典

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

go

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

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

是否有可能做到这一点?可以仅为测试目的而构建二进制文件,因此可以根据需要选择任何编译选项。


阅读 271

收藏
2020-07-02

共1个答案

小编典典

Go Coverage工具只能与测试包一起使用。但是,并非所有希望都消失了。

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

基本上:

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

    func TestMainApp(t *testing.T) {
    go main()
    // .. then start your integration tests
    

    }

  2. 在测试中运行真实应用程序的情况下,可以通过exec.Cmd帮助启动集成测试。

  3. 收集您的承保范围统计信息。

  4. 利润。

一年前,这篇名为Go with external tests的文章概述了一种类似的方法。

2020-07-02