go语言单元测试应用如何操作?北京go培训周末班

    /    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(62); 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 命令

运行结果:

--- FAILTest_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(60); 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)

分享至