Go的标准库提供了几个与测试有关的库,其中最主要的是testing
包,本章介绍的绝大部分测试功能都来源于这个包。net/http/httptest
包是另一个与Web应用编程有关的库,这个库是基于testing
库实现的。正如它的名字所示,httptest
包是一个用于测试Web应用的库。
因为testing
包提供了在Go中实现基本的自动测试的能力,所以本章会先介绍testing
包,等读者了解了testing
包之后,再学习httptest
包就会有事半功倍的效果。
testing
包需要与go test
命令以及源代码中所有以_test.go
后缀结尾的测试文件一同使用。尽管Go并没有强制要求,但一般来说,测试文件的名字都会与被测试源码文件的名字相对应。
举个例子,对于源码文件server.go
,我们可以创建出一个名为server_test.go
的测试文件,这个测试文件包含我们想对server.go
进行的所有测试。另外需要注意的一点是,被测试的源码文件和测试文件必须位于同一个包之内。
为了测试源代码,用户需要在测试文件中创建具有以下格式的测试函数,其中Xxx可以是任意英文字母以及数字的组合,但是首字符必须是大写的英文字母:
func TestXxx(*testing.T) { ... }
在测试函数的内部,用户可以使用Error
、Fail
等一系列方法表示测试失败。当用户在终端里面执行go test
命令的时候,所有符合上述格式的测试函数就会被执行。如果一个测试在执行时没有出现任何失败,那么我们就说函数通过了测试。接下来,就让我们实际地学习如何使用testing
包进行测试。