首页 >后端开发 >Golang >如何在 Go 中重用导入包的测试代码?

如何在 Go 中重用导入包的测试代码?

Linda Hamilton
Linda Hamilton原创
2024-11-04 07:12:30524浏览

How Can We Reuse Test Code from Imported Packages in Go?

在导入的包中重用测试代码

管理复杂的代码库时,重用测试代码的能力对于高效且可维护的测试实践至关重要。本文探讨了开发人员面临的常见挑战:重用导入包中的测试代码。

考虑以下场景:项目具有以下目录结构:

/
|-- main.go
|-- main_test.go
|-- pkg1
    |-- pkg1_test.go

main.go 导入pkg1 并包含依赖于 pkg1 中未导出函数的代码。 pkg1_test.go 包含一个实用函数 verifyTaskNumber,它调用 pkg1 中的内部函数。然而,main_test.go 需要在自己的测试中使用 verifyTaskNumber。

为了解决这个问题,提出了两种可能的解决方案:

  1. 将 verifyTaskNumber 移至 pkg1.go。这允许 main_test.go 直接访问该函数。但是,verifyTaskNumber 可能包含在 go build 生成的二进制文件中,使其无法进行测试。
  2. 创建一个单独的 testutility 包,包含 verifyTaskNumber,并将其导入到 main_test.go 和 pkg1_test.go 中。虽然这允许访问该函数,但它创建了对 testutility 的依赖,而 testutility 本身又依赖于 pkg1。

这两种解决方案都没有提供无缝且高效的方法来重用测试代码。另一种解决方案是将 verifyTaskNumber 移至在 main_test.go 和 pkg1_test.go 中导入的 utils 包。为了解决对 pkg1 中未导出函数的依赖,可以将内部函数的结果保存到支持文件中并由 utils 包加载。这避免了对未导出函数的依赖,同时提供对多个测试包中的测试实用程序的访问。

以上是如何在 Go 中重用导入包的测试代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

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