在 Go 中的导入包中重用测试代码
在您的目录结构中,您希望在 pkg1_test.go 中有一个测试实用程序函数在 main_test.go 中使用,它导入 pkg1。然而,pkg1_test.go 中的函数使用了 pkg1 中未导出的函数,使其在包外不可用。
考虑以下方法:
将函数移至 pkg1.go
虽然将函数移动到 pkg1.go 可以使其在 main_test.go 中访问,但它可能会导致该函数包含在 go build 生成的二进制文件中。这对于仅测试函数来说是不可取的。
创建单独的测试实用程序包
将函数移动到单独的测试实用程序包并在 *_test 中手动导入。 go 文件似乎很理想。但是,该函数仍然需要访问 pkg1 中的内部方法,这些方法可能无法导出。
混合方法
对于您的特定场景,混合方法提供了解决方案:
在 pkg1_test.go 中,添加如下函数:
<code class="go">func getPrivateData() []byte { // Code to get internal data from pkg1 }</code>
这种方法允许您重用测试实用函数,同时将其与生产代码分开并避免未导出函数的问题。
以上是如何通过未导出的函数重用 Go 中导入包的测试代码?的详细内容。更多信息请关注PHP中文网其他相关文章!