首页  >  文章  >  后端开发  >  如何在 Go 中测量具有单独测试文件的包的覆盖率?

如何在 Go 中测量具有单独测试文件的包的覆盖率?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-27 20:18:30754浏览

 How Can I Measure Coverage for a Package with Separated Test Files in Go?

使用单独的测试文件测试包覆盖率

在组织包含大量测试文件的代码库时,将测试与实际情况分开可能会更有利代码库清晰并遵守最佳实践。在这种情况下,测试文件可能与被测代码驻留在不同的包中。

获取实际被测包的覆盖率统计信息时会出现一个潜在的挑战。默认情况下,测试仅覆盖它们所在的包。此问题源于 Go 的方法,该方法规定代码和测试文件应共存于同一个包中。

解决方案

幸运的是,Go 为这个困境提供了解决方案:

go test -cover -coverpkg "api_client" "api_client_tests"

通过指定“-coverpkg”标志,您可以指示 Go 测量指定包(本例中为“api_client”)的覆盖率),同时从单独的包(“api_client_tests”)运行测试。这使您可以准确地确定 API 客户端包的覆盖范围,而无需将其与测试文件合并。

替代方法

虽然使用单独的测试包可以虽然在组织方面提供了好处,但值得注意的是,这种方法偏离了传统的 Go 组织代码和测试的方式。如果黑盒测试是您的主要目标,其中只有公共包 API 可供测试访问,则可以使用替代方法:

  1. 将测试文件与代码保存在同一包中。
  2. 使用“内部”可见性修饰符来限制对包私有方法和变量的访问,确保只有包的公共 API 才会暴露给测试。

以上是如何在 Go 中测量具有单独测试文件的包的覆盖率?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn