我知道在运行单元测试时可以捕获代码覆盖率指标。但是,我们想知道当我们对二进制本身运行集成测试(复数)时的覆盖范围,例如:
go build
./mybin somefile1
./mybin somefile2
# ... test a bunch more files and input flags
有可能这样做吗?二进制文件只能用于测试目的,因此需要任何编译选项。
答案 0 :(得分:3)
Go coverage工具仅与测试包一起使用。但并非所有希望都失去了。
如果您可以将集成测试强制转换为go测试框架,那么您应该拥有所需的一切。这不应该听起来那么难。
基本上:
编写一个在go例程中执行main()
函数的测试文件:
func TestMainApp(t *testing.T) {
go main()
// .. then start your integration tests
}
让您的真实应用在测试中运行,开始您的集成测试 - 可能在exec.Cmd的帮助下。
收集您的报道统计信息。
利润。
这篇文章Go coverage with external tests,从一年前开始,概述了一种类似的方法。