You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
funcTestAdd(t*testing.T) {
c:=Calculator{}
a, b:=1, 2op:=OpAddres, err:=c.Do(op, a, b)
iferr!=nil {
t.Errorf("do error: %v", err)
}
want:=3ifres!=want {
t.Errorf("calculater error: a=%d,b=%d,res=%d,want=%d", a, b, res, want)
}
}
1.2、运行单元测试
运行测试用例。
go test
go test -v .
go test -v -run="TestAdd"# 与上面一样
go test -v -run="Add"
1.3、单元测试覆盖
go test -cover查看当前的测试用例覆盖。
go test -cover
➜ 1_testing (go-testing) ✗ go test -cover
PASS
coverage: 25.0% of statements
ok github.com/xpzouying/golang-notes/docs/go_testing/demo/1_testing 0.002s
手动生成
1、生成profile数据文件:使用-coverprofile。
➜ 1_testing (go-testing) ✗ go test -coverprofile=coverage.out
PASS
coverage: 25.0% of statements
ok github.com/xpzouying/golang-notes/docs/go_testing/demo/1_testing 0.002s
2、转换为html文件:使用-html。
➜ 1_testing (go-testing) ✗ go tool cover -html=coverage.out
HTML output written to /tmp/cover018342743/coverage.html
使用vscode查看覆盖
MacOS下按快捷键:command+shift+P,搜索命令:go cover或go: toggle test coverage。
1.4、增加更多的单元测试
使用TDD模式
安装goconvey工具。
go get github.com/smartystreets/goconvey
# 启动服务,默认监听在:8080端口
goconvey
Golang测试
本章节介绍在Golang中如何进行测试。
1、单元测试
以一个计算器示例demo。
计算器支持4种操作,加减乘除。
暂时不考虑溢出的情况。围绕该计算器编写响应的测试用例代码。
1.1、单元测试用例
测试用例的规则为:
测试文件以
*_test.go
命名,与正常的代码文件放在同一个package里面。Xxx不能以小写字母开头。
测试用例
1.2、运行单元测试
运行测试用例。
1.3、单元测试覆盖
go test -cover
查看当前的测试用例覆盖。go test -cover
手动生成
1、生成profile数据文件:使用
-coverprofile
。➜ 1_testing (go-testing) ✗ go test -coverprofile=coverage.out PASS coverage: 25.0% of statements ok github.com/xpzouying/golang-notes/docs/go_testing/demo/1_testing 0.002s
2、转换为html文件:使用
-html
。使用vscode查看覆盖
MacOS下按快捷键:
command+shift+P
,搜索命令:go cover
或go: toggle test coverage
。1.4、增加更多的单元测试
使用TDD模式
安装goconvey工具。
go get github.com/smartystreets/goconvey # 启动服务,默认监听在:8080端口 goconvey
增加更多的测试用例
重复大量的代码,覆盖各种边界值,特殊条件等等。
使用表格法:table-driven
使用表格法,可以避免重复的业务逻辑代码,更加关注测试数据和异常边界值。
The text was updated successfully, but these errors were encountered: