为什么你写的代码总是有 Bug?用它来保证 Go 代码质量( 六 )

清单 14 和清单 13 相同,只是使用 t.Helper() 。这个函数定义使用了 *testing.T 作为参数,省略了 error 的返回 。函数先调用 t.Helper(),这在编译测试二进制文件时发出信号:如果 t 在这个函数中调用任何接收器函数,则将其报告给调用函数(Test*) 。与辅助函数不同,所有行号和文件信息会都会关联到这个函数 。
一些测试可以进行安全的并行进行,并且 Go testing 包原生支持并行运行测试 。在所有 Test* 函数开始调用 t.Parallel(), 可以编译出可以安全并行运行的测试二进制文件 。就是这么简单,就是这么强大!
结论如果不配置程序运行时所需的外部系统,则无法在集成测试的上下文中完全验证程序的行为 。此外,需要持续监测那些外部系统(特别是当它们包含应用程序状态数据的情况下),以确保它们包含有效和有意义的数据 。Go 使开发人员不仅可以在测试过程中进行配置,还可以无需标准库之外的包就能维护外部数据 。因此,我们可以编写可读性,一致性,性能和可靠性同时都能保证的集成测试 。Go 的真正魅力正在于其简约而功能齐全的工具集,它为开发人员提供了无需依赖外部库或任何非常规限制的功能 。


推荐阅读