83417807 2020-06-28
Go 语言推荐测试文件和源代码文件放在一块,测试文件以 _test.go
结尾。比如,当前 package 有 calc.go
一个文件,我们想测试 calc.go
中的 Add
和 Mul
函数,那么应该新建 calc_test.go
作为测试文件。
example/ |--calc.go |--calc_test.go
假如 calc.go
的代码如下:
package main func Add(a int, b int) int { return a + b } func Mul(a int, b int) int { return a * b }
那么 calc_test.go
中的测试用例可以这么写:
package main import "testing" func TestAdd(t *testing.T) { if ans := Add(1, 2); ans != 3 { t.Errorf("1 + 2 expected be 3, but %d got", ans) } if ans := Add(-10, -20); ans != -30 { t.Errorf("-10 + -20 expected be -30, but %d got", ans) } }
Test
加上待测试的方法名。t *testing.T
。*testing.B
,TestMain 的参数是 *testing.M
类型。运行 go test
,该 package 下所有的测试用例都会被执行。
$ go test ok example 0.009s
或 go test -v
,-v
参数会显示每个用例的测试结果,另外 -cover
参数可以查看覆盖率。
$ go test -v === RUN TestAdd --- PASS: TestAdd (0.00s) === RUN TestMul --- PASS: TestMul (0.00s) PASS ok example 0.007s
如果只想运行其中的一个用例,例如 TestAdd
,可以用 -run
参数指定,该参数支持通配符 *
,和部分正则表达式,例如 ^
、$
。
$ go test -run TestAdd -v === RUN TestAdd --- PASS: TestAdd (0.00s) PASS ok example 0.007s
遇到如下报错的解决方法