go 单元测试
2022年1月14日- 文件命名规则 在要测试的文件后, 加_test. 如你要测试文件common.go, 测试文件名为common_test.go
- 测试文件里面的测试方法命名要以Test开头
- Fail, Error: 该测试失败, 该测试继续执行,其他测试继续执行
- FailNow Fatal: 该测试失败, 该测试终止, 其他测试继续执行
单元测试框架
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package test import ( "fmt" "github.com/stretchr/testify/assert" "testing" ) /** * 期待值测试方法 */ func TestSquare(t *testing.T) { inputs := [...]int{1, 2, 3} expected := [...]int{1, 4, 9} //自己可以加点错误 for i := 0; i < len(inputs); i++ { ret := square(inputs[i]) if ret != expected[i] { t.Errorf("输入是 %d, 期待是 %d, 结果是 %d", inputs[i], expected[i], ret) } } } /** * Error 测试 */ func TestErrorInCode(t *testing.T) { fmt.Println("Start") t.Error("Error") fmt.Println("End") } /** * Fail测试 */ func TestFailInCode(t *testing.T) { fmt.Println("Start") t.Fatal("Error") fmt.Println("End") } /** * 断言使用 */ func TestSquareWithAssert(t *testing.T) { inputs := [...]int{1, 2, 3} expected := [...]int{1, 4, 9} for i := 0; i < len(inputs); i++ { ret := square(inputs[i]) assert.Equal(t, expected[i], ret) //相等断言 } } |
代码覆盖率,就是看被测试的文件,有没有完全测试到
1 2 3 |
go get -v golang.org/x/tools/cmd/cover //go 新的版本没有cover需要手动安装 go test -v -cover go tool cover -html=coverage.out |
断言
https://github.com/stretchr/testify