golang 测试-单元测试

2,754 阅读1分钟

原生的单元测试

代码地址:github.com/zhaogaolong…

1 首先创建一个 calc.go 的文件。

假如这就是我们的业务代码,增加了 Sum 方法

// calc.go
package native_uniitest

func Sum(firstNum, secondNum int) int {
	return firstNum + secondNum
}

2 创建单测文件 calc_test.go

单侧文件创建规则:与源文件同名后加 _test.go的文件。

// calc_test.go
package native_uniitest

import "testing"

func TestSum(t *testing.T) {
	rightResult := 8
	result := Sum(3, 5)
	if result != rightResult {
		t.Errorf("error, require %d, got %d", rightResult, result)
	}
}

3 运行单侧

$ go test -v calc_test.go calc.go
=== RUN   TestSum
--- PASS: TestSum (0.00s)
PASS
ok      command-line-arguments  0.005s

4 单侧覆盖率

-cover 显示单侧覆盖率
$ go test -v calc_test.go calc.go -cover
=== RUN   TestSum
--- PASS: TestSum (0.00s)
PASS
coverage: 100.0% of statements
ok      command-line-arguments  0.004s  coverage: 100.0% of statements
-coverprofile 保存成文件
$ go test -v calc_test.go calc.go -coverprofile=size_coverage.out
=== RUN   TestSum
--- PASS: TestSum (0.00s)
PASS
coverage: 100.0% of statements
ok      command-line-arguments  0.004s  coverage: 100.0% of statements
cover -func 查看每一个 function 的代码覆盖率
$ go tool cover -func=size_coverage.out
/Users/zhaogaolong/go/src/github.com/zhaogaolong/go-example/go_test/unittest/native_uniitest/calc.go:3: Sum             100.0%
total:                                                                                                  (statements)    100.0%

cover -html 浏览器查看代码覆盖率

$ go tool cover -html=size_coverage.out