• gtest

    gtest

    gtest提供了常用的单元测试方法。

    使用方式

    1. import "github.com/gogf/gf/g/test/gtest"

    接口文档

    https://godoc.org/github.com/gogf/gf/g/test/gtest

    1. func Case(t *testing.T, f func())
    2. func Assert(value, expect interface{})
    3. func AssertEQ(value, expect interface{})
    4. func AssertGE(value, expect interface{})
    5. func AssertGT(value, expect interface{})
    6. func AssertIN(value, expect interface{})
    7. func AssertLE(value, expect interface{})
    8. func AssertLT(value, expect interface{})
    9. func AssertNE(value, expect interface{})
    10. func AssertNI(value, expect interface{})
    11. func Error(message ...interface{})
    12. func Fatal(message ...interface{})

    简要说明如下:

    1. 断言方法支持任意类型的变量比较;
    2. 使用大小比较断言方法如AssertGE时,参数支持字符串及数字比较,其中字符串比较为大小写敏感;
    3. 包含断言方法AssertINAssertNI支持slice类型参数,暂不支持map类型参数;

    使用示例

    例如gstr模块其中一个单元测试用例:

    1. package gstr_test
    2. import (
    3. "github.com/gogf/gf/g/test/gtest"
    4. "github.com/gogf/gf/g/text/gstr"
    5. "testing"
    6. )
    7. func Test_Trim(t *testing.T) {
    8. gtest.Case(t, func() {
    9. gtest.Assert(gstr.Trim(" 123456\n "), "123456")
    10. gtest.Assert(gstr.Trim("#123456#;", "#;"), "123456")
    11. })
    12. }

    也可以这样使用:

    1. package gstr_test
    2. import (
    3. . "github.com/gogf/gf/g/test/gtest"
    4. "github.com/gogf/gf/g/text/gstr"
    5. "testing"
    6. )
    7. func Test_Trim(t *testing.T) {
    8. Case(t, func() {
    9. Assert(gstr.Trim(" 123456\n "), "123456")
    10. Assert(gstr.Trim("#123456#;", "#;"), "123456")
    11. })
    12. }

    一个单元测试用例可以包含多个Case,一个Case也可以执行多个断言。断言成功时直接PASS,但是如果断言失败,会输出如下类似的错误信息,并终止当前单元测试用例的继续执行(不会终止后续的其他单元测试用例)。

    1. === RUN Test_Trim
    2. [ASSERT] EXPECT 123456#; == 123456
    3. 1. /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/g/text/gstr/gstr_z_unit_trim_test.go:20
    4. 2. /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/g/text/gstr/gstr_z_unit_trim_test.go:18
    5. --- FAIL: Test_Trim (0.00s)
    6. FAIL