Golang 测试
一、 go test
go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数,然后生成一个临时的main包用于调用相应的测试函数,然后构建并运行、报告测试结果,最后清理测试中生成的临时文件。
二、 测试函数
- 函数原型
func TestName(t *testing.T) {
// ...
}
// 1> 测试函数的名字必须以Test开头,可选的后缀名必须以大写字母开头
- 每个测试函数必须导入 testing 包
package word
import "testing"
func TestPalindrome(t *testing.T) {
if !IsPalindrome("detartrated") {
t.Error(`IsPalindrome("detartrated") = false`)
}
if !IsPalindrome("kayak") {
t.Error(`IsPalindrome("kayak") = false`)
}
}
func TestNonPalindrome(t *testing.T) {
if IsPalindrome("palindrome") {
t.Error(`IsPalindrome("palindrome") = true`)
}
}
- 测试命令
go test 用来执行测试用例 go test -v 显示每个函数的执行时间 go test -v -run=“函数1|函数2” , -run 对应一个正则表达式,只有测试函数名被它正确匹配的测试函数才会被 go test 测 试命令运行
- 测试一个命令
可以测试 main 包中的函数,在执行 go test 时会忽略 main 函数
- 白盒测试
黑盒测试只需要测试包公开的文档和API行为,内部实现对测试代码是透明的。相反,白盒测试有访问包内部函数和数据结构的权限,因此可以做到一下普通客户端无法实现的测试。
黑盒和白盒这两种测试方法是互补的。黑盒测试一般更健壮,随着软件实现的完善测试代码很少需要更新。它们可以帮助测试者了解真是客户的需求,也可以帮助发现API设计的一些不足之处。相反,白盒测试则可以对内部一些棘手的实现提供更多的测试覆盖。