从非测试文件调用测试函数
不建议从非测试文件调用测试函数。通常,应该使用 go test 命令执行测试。
避免这种做法的原因:
-
包范围: 在 Go 中,测试文件遵循特定的命名约定(例如 _test.go),这意味着它们存在于与主包分开的自己的包范围中。这种分离是由编译器强制执行的。
-
测试框架:Go 的测试框架旨在管理测试执行,包括设置、拆卸和报告。
-
代码可维护性: 将测试代码与非测试代码混合可能会导致代码重复、混乱和维护挑战。
替代测试方法:
不要直接调用测试函数,而是考虑以下方法:
黑盒测试:
- 创建带有 _test.go 后缀的专用测试文件并测试从包外部导出函数。这模拟了外部包如何使用代码。
白盒测试(内部测试):
- 在同一包中创建测试文件用于测试未导出的函数、实用方法或特定的实现细节。这些测试有助于调试和理解内部行为。
第三方库:
- 利用 github.com/stretchr/ 等库证明更强大和可定制的测试。这些库提供了用于模拟、断言和测试管理的附加功能。
建议:
通过将测试保存在单独的 _test.go 中来遵循 Go 的测试最佳实践文件并使用 go test 命令进行测试执行。这将确保正确的封装、可维护性以及与 Go 中测试的预期用途保持一致。
以上是为什么应该避免从 Go 中的非测试文件调用测试函数?的详细内容。更多信息请关注PHP中文网其他相关文章!