/ 2019-06-24
更多内容请关注微信公众号:oldboygo
单元测试应用
目录结构:
oldboy
|
—— oldboy.go
|
—— oldboy_test.go
oldboy.go 代码如下:
package oldboy
import (
"errors"
)
func Division(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("除数不能为0")
}
return a / b, nil
}
oldboy_test.go 代码如下:
package gotest
import (
"testing"
)
func Test_Division_1(t *testing.T) {
if i, e := Division(6, 2); i != 3 || e != nil { //try a unit test on function
t.Error("除法函数测试没通过") // 如果不是如预期的那么就报错
} else {
t.Log("第一个测试通过了") //记录一些你期望记录的信息
}
}
func Test_Division_2(t *testing.T) {
t.Error("就是不通过")
}
在 oldboy 目录下面执行 go test 命令
运行结果:
--- FAIL: Test_Division_2 (0.00s)
oldboy_test.go:16: 就是不通过
FAIL
exit status 1
FAIL oldboy 0.007s
默认情况下执行go test 不会显示测试通过的信息的,我们需要带上参数go test -v,这样就会显示通过信息:
在 oldboy 目录下面执行 go test -v
运行结果:
=== RUN Test_Division_1
--- PASS: Test_Division_1 (0.00s)
oldboy_test.go:11: 第一个测试通过了
=== RUN Test_Division_2
--- FAIL: Test_Division_2 (0.00s)
oldboy_test.go:16: 就是不通过
FAIL
exit status 1
FAIL oldboy 0.006s
上面的输出详细的展示了这个测试的过程,我们看到测试函数1Test_Division_1测试通过,而测试函数2Test_Division_2测试失败了,最后得出结论测试不通过。接下来我们把测试函数2修改成如下代码:
func Test_Division_2(t *testing.T) {
if _, e := Division(6, 0); e == nil { //try a unit test on function
t.Error("Division did not work as expected.") // 如果不是如预期的那么就报错
} else {
t.Log("one test passed.", e) //记录一些你期望记录的信息
}
}
然后执行go test -v
运行结果:
=== RUN Test_Division_1
--- PASS: Test_Division_1 (0.00s)
oldboy_test.go:11: 第一个测试通过了
=== RUN Test_Division_2
--- PASS: Test_Division_2 (0.00s)
oldboy_test.go:19: one test passed. 除数不能为0
PASS
ok oldboy 0.007s
单元测试通过了!
更多内容请关注微信公众号:oldboygo
(0)