添加测试
现在你的代码已经稳定(干得漂亮),接下来添加一个测试。在开发过程中测试代码可以发现随着修改而引入的 bug。本文中,你将为 Hello 函数添加一个测试。
注意: 本文是系列教程的一部分,该系列始于 创建 Go 模块。
Go 语言内建的单元测试支持使得在开发过程中进行测试变得更加容易。具体来说,通过使用命名约定、Go 的 testing 包以及 go test 命令,你可以快速编写和执行测试。
步骤
- 创建测试文件,在
greetings目录中创建一个名为greetings_test.go的文件。
文件名以
_test.go结尾,这会告知go test命令该文件包含测试函数。
- 将以下代码粘贴 到
greetings_test.go并保存文件:
在这段代码中,你:
- 在与其测试代码相同的包中实现测试函数。
- 创建两个测试函数来测试
greetings.Hello函数。测试函数名称的形式为TestName,其中 Name 描述了特定测试的内容。此外,测试函数接受一个指向testing包中的testing.T类型的指针作为参数。你使用这个参数的 methods 来报告和记录测试中的信息。 - 实现了两个测试:
- 从命令行运行测试,在
greetings目录中使用go test命令:
go test命令会执行测试文件(文件名以_test.go结尾)中的测试函数(函数名以Test开头)。你可以添加-v标志以获取详细输出,列出所有测试及其结果。
测试应该通过:
- 破坏
Hello函数 以查看失败的测试:
TestHelloName测试检查返回值是否包含你指定的名字。为了查看失败的测试结果,修改Hello函数,使其响应中不包含名字。
在 greetings/greetings.go 中,将 Hello 函数替换为以下代码(注意高亮部分):
- 再次运行测试 在
greetings目录中:
这次运行
go test时不加-v标志。输出将仅显示失败测试的结果,这在你有许多测试时非常有用。TestHelloName测试应该失败,而TestHelloEmpty仍然通过。
总结
你现在为 Go 代码编写并执行了测试,学会了如何使用 Go 内建的测试框架来确保你的函数按预期行为。这种做法有助于保持代码质量,并在开发早期捕获 bug。
在接下来的(也是最后一个)主题中,你将看到如何编译和安装代码以便在本地运行。