导入包中的可重用测试代码
在提供的场景中,您有一个测试文件(main_test.go),需要访问另一个包(pkg1_test.go)中的仅测试函数。这对跨导入的包重用测试代码提出了挑战。
可能的解决方案及其缺点:
-
将函数移至 pkg1.go: 这使得 main_test.go 可以使用这些函数,但它们可能会成为二进制文件的一部分,这是不可取的。
-
使用单独的 testutility 包: 虽然这允许您对测试进行分组 -仅函数,它引入了对 pkg1 中内部方法的依赖,产生了潜在的问题。
推荐解决方案:
而不是使用上述任何一种方法,考虑以下方法:
-
创建支持包:将仅测试函数移至名为 support 的新包。该包应该仅依赖于 pkg1 的公共接口。
-
使用支持文件: 在支持中,定义一个支持文件,其中包含 pkg1 的私有函数的输出。
-
在支持函数中加载支持文件:在支持包中,创建一个加载支持文件并执行必要操作的函数。
- **从 main_test.go 调用支持函数: ** 在 main_test.go 中导入支持包,并调用使用 pkg1` 中私有函数的函数。
此解决方案:
- 将仅测试代码分开来自生产代码。
- 确保 pkg1 的内部函数保持私有。
- 避免二进制分发问题。
以上是如何在保持内部函数私有的同时重用导入包中的测试代码?的详细内容。更多信息请关注PHP中文网其他相关文章!