如何测试
- 编写测试需要将文件命名为xxx_test.go的文件中编写
- 测试函数的命名必须以单词Test开始
- 测试函数只接受一个参数t *testing.T
package hellotest
import "testing"
func TestHello(t *testing.T) {
got := Hello()
want := "Hello world"
if got != want{
t.Errorf("got '%q' want '%q'",got,want)
}
}
子测试:有时,对一个「事情」进行分组测试,然后再对不同场景进行子测试非常有效。
重构不仅仅是针对程序的代码
package hellotest
import "testing"
func TestHello(t *testing.T) {
assertCorrectMessage := func(t *testing.T,got,want string) {
t.Helper()
if got != want{
t.Errorf("got '%q' want '%q'",got,want)
}
}
t.Run("saying hello to people", func(t *testing.T) {
got := Hello("Chris")
want := "Hello Chris"
assertCorrectMessage(t,got,want)
})
t.Run("empty string defaults to 'world'", func(t *testing.T) {
got := Hello("")
want := "Hello world"
assertCorrectMessage(t,got,want)
})
}
t.Helper()
需要告诉测试套件这个方法是辅助函数(helper)
testing.B
可使你访问隐性命名(cryptically named)b.N。