前言
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。我们根据它来检验代码的行为是否和预期的一样,如果单元测试不通过,要么代码有bug,要么测试条件输入不正确,总之,需要修复使单元测试能够通过。单元测试一个最大的好处,就是确保一个程序模块的行为符合我们设计的预期,在将来对代码进行修改/重构时,还能最大限度地保证代码的行为仍然正确。
Go对单元测试的支持已经相当友好了,原生的go test
标准库就是专门用来进行单元测试的编写的。使用go test
编写单元测试时需要遵循一些约定,比如所有测试代码都需要添加到_test.go
结尾的测试文件中,这样在使用go build
进行构建时,测试代码才会被排除在外。另外,每个测试函数都必须导入testing
包,测试函数的名字必须以Test
开头,且跟在Test
后面的后缀名必须以大写开头,因此测试函数的声明应该是这样的:
func TestSin(t *testing.T) { /* ... */ } func TestCos(t *testing.T) { /* ... */ } func TestLog(t *testing.T) { /* ... */ } 复制代码
_test.go
测试文件通常和需要被测试的文件放在同一个包内,比如有如下的一段待测试的代码(在word
包目录下的word.go
文件):
package word // 判断一个字符串s是否时回文字符串 func IsPalindrome(s string) bool { for i :=&nbs