在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近写了测试代码,整理了一下。 先看看简单的测试代码. // add_test.go ==> 文件名 _test.go 结尾的默认为测试代码文件 package models import ( "testing" ) //Test开头的默认为测试方法 func TestAdd(t *testing.T) { //arrange var x, y, res int x = 2 y = 3 //act result = Add(x, y) //assert if result != 5 { t.Fatal("Add的结果不正确") } } // add.go package models func Add(x, y int) int { return x + y } 查看测试结构。 $ go test -v ==> 依次运行当前package的 _test.go文件的测试方法。 === RUN TestAdd --- PASS: TestAdd (0.00s) PASS ok gotest/test5 0.006s 目前编写测试代码普遍公认的模板结构。
如果测试不通过呢? //assert if result != 6 { //==>结果改成 6 t.Fatal("Add的结果不正确") } $ go test --- FAIL: TestAdd (0.00s) add_test.go:36: Add的结果不正确 FAIL exit status 1 FAIL gotest/test5/models 0.006s 也可以写一个公用的比较方法, 自定义输出结果。 package test import ( "reflect" "testing" ) func Equal(t *testing.T, exp, got interface{}) { if !reflect.DeepEqual(exp, got) { t.Errorf("\033[31m\n exp: %v \n got: %v \033[39m\n", exp, got) t.FailNow() } } //assert if result != 6 { //==>结果改成 6 t.Fatal("Add的结果不正确") } //=====>> 比较的方法改用自己写的test包的Equal方法。 //assert test.Equal(t, result, 6) 输出测试未通过的代码位置,以及比较结果。 $ go test --- FAIL: TestAdd (0.00s) test.go:10: exp: 5 got: 6 FAIL exit status 1 FAIL gotest/test5/models 0.007s 这样可以按照自己的喜好来自定义提示了。
覆盖率 go test -cover go test -cover -coverprofile=coverage.out go tool cover -html=./coverage.out 可以查看测试代码的覆盖率,这只是一个补助的功能。
下篇文章介绍项目中我是怎么写测试代码的…^^ 未完继续----------------------------------------------
欢迎大家的意见和交流
email: [email protected]
博客:https://limingxie.github.io/
|
请发表评论