我知道在运行单元测试时可以捕获代码覆盖率指标。但是,当我们针对二进制文件本身进行集成测试(复数)时,我们想知道覆盖范围是什么,例如:
go build
./mybin somefile1
./mybin somefile2
# ... test a bunch more files and input flags
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?可以仅为测试目的而构建二进制文件,因此可以根据需要选择任何编译选项。
Go 覆盖工具仅与测试包结合使用。但并不是所有的希望都破灭了。
如果您可以将您的集成测试强制转换为 go 测试框架,那么您应该拥有所需的一切。这不应该像听起来那么难。
基本上:
编写一个测试文件,main()
在 go 例程中执行您的函数:
func TestMainApp(t *testing.T) {
go main()
// .. then start your integration tests
}
Run Code Online (Sandbox Code Playgroud)在测试中运行您的真实应用程序后,开始您的集成测试——可能在exec.Cmd的帮助下。
收集您的覆盖率统计数据。
利润。
这篇一年前的Go 覆盖外部测试文章概述了类似的方法。