Go 语言推荐测试文件和源代码文件放在一块,测试文件以 _test.go
结尾。比如,当前 package 有 calc.go
一个文件,我们想测试 calc.go
中的 Add
和 Mul
函数,那么应该新建 calc_test.go
作为测试文件。
example/
|--calc.go
|--calc_test.go
假如 calc.go
的代码如下:
1 package main
2
3 func Add(a int, b int) int {
4 return a + b
5 }
6
7 func Mul(a int, b int) int {
8 return a * b
9 }
那么 calc_test.go
中的测试用例可以这么写:
1 package main
2
3 import "testing"
4
5 func TestAdd(t *testing.T) {
6 if ans := Add(1, 2); ans != 3 {
7 t.Errorf("1 + 2 expected be 3, but %d got", ans)
8 }
9
10 if ans := Add(-10, -20); ans != -30 {
11 t.Errorf("-10 + -20 expected be -30, but %d got", ans)
12 }
13 }
- 测试用例名称一般命名为
Test
加上待测试的方法名。 - 测试用的参数有且只有一个,在这里是
t *testing.T
。 - 基准测试(benchmark)的参数是
*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
参数指定,该参数支持通配符 *
,和部分正则表达式,例如 ^
、$
。
1 $ go test -run TestAdd -v
2 === RUN TestAdd
3 --- PASS: TestAdd (0.00s)
4 PASS
5 ok example 0.007s
遇到如下报错的解决方法
来源:oschina
链接:https://my.oschina.net/u/4408675/blog/4328205