ker*_*lyn 11 integration-testing go
"go tool cover -var = foo"似乎可以生成可以在集成测试工具中部署的检测代码.是否有人为此目的使用此功能?如果是这样,是否有定期转储计数器的传统方法?似乎棘手的部分是在所有感兴趣的文件中以近乎同时的方式执行此操作.即使这样,一些倾斜(如果使用-mode = count)也是不可避免的.
我们使用它来从各种测试中收集代码覆盖率,以获得跨测试的单一代码覆盖率数字,并查看未覆盖的代码路径 * 模块测试 * 集成测试 * UI 测试 * API 测试 * 单元测试
实现这一目标的方法是
构建启用覆盖的检测二进制文件 (app.debug)。下面的命令生成一个启用了覆盖检测的 app.debug
$ go test -c -covermode=atomic -coverpkg="pkg/path/..." -o app.debug
Run Code Online (Sandbox Code Playgroud)在测试中使用这个 app.debug 而不是你的应用程序并针对它运行测试。我们是一个 HTTP 服务器,但这应该适用于大多数应用程序。每个测试都会生成一个单独的 cov 文件,稍后需要合并该文件。
$ ./app.debug -test.coverprofile=functest.cov -- app.params
Run Code Online (Sandbox Code Playgroud)合并所有测试 cov 文件以获得单个 cov 文件。为此,您可以使用gocovmerge
$ find $COVERAGE_DIR -name *.cov | xargs gocovmerge > final.cov
Run Code Online (Sandbox Code Playgroud)你终于有了一个覆盖文件,它可以让你完整地了解各种覆盖范围的代码覆盖率。