1.测试用例文件名必须以 _test.go 结尾。比如cal_test.go,cal不是固定的。
2.测试用例函数必须以Test开头,一般来说就是Test+被测试的函数名,比如TestAddUpper。
3.TestAddUpper(t testing.T)的形参类型必须是testing.T
4.一个测试用例文件中,可以有多个测试用例函数,比如TestAddUpper、TestSub
5.运行测试用例指令
1)cmd > go test [如果运行正确,无日志,错误时,会输出日志]
2)cmd > go test -v [运行正确或是错误,都输出日志]
3)cmd > go test cal_test.go [测试单个文件]
4)cmd > go test -v -test.run TestAddupper [测试单个方法]
6.当出现错误时,可以使用t.Fatalf来格式化输出错误信息,并退出程序
7.t.Logf方法可以输出相应的日志
8.测试用例函数,并没有放在main函数中,也执行了,这就是测试用例的方便之处
9.PASS表示测试用例运行成功,FAIL表示测试用例运行失败

  1. package even
  2. import "testing"
  3. func TestEven(t *testing.T) {
  4. if Even(10) {
  5. t.Log("10 must even")
  6. t.Fail()
  7. }
  8. }

用(测试数据)表驱动测试

  1. package even
  2. import "testing"
  3. var tests = []struct {
  4. in int
  5. out bool
  6. }{
  7. {1, false},
  8. {2, true},
  9. {3, false},
  10. }
  11. func verify(t *testing.T, testNum int, testCase string, in int, out bool, expected bool) {
  12. if expected != out {
  13. t.Errorf("%d. %s with input = %d: output %t != %t", testNum, testCase, in, out, expected)
  14. }
  15. }
  16. func TestEven2(t *testing.T) {
  17. for i, v := range tests {
  18. b := Even(v.in)
  19. verify(t, i, "FuncEven", v.in, b, v.out)
  20. }
  21. }