• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go项目的测试代码1(基础)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近写了测试代码,整理了一下。

先看看简单的测试代码.

// 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

目前编写测试代码普遍公认的模板结构。

1)arrange: 测试之前需要准备的代码。
2)act: 实际要测试的方法。
3)assert: 结果确认。

如果测试不通过呢?

//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

go test -cover -coverprofile=coverage.out
go tool cover -html=./coverage.out

可以查看测试代码的覆盖率,这只是一个补助的功能。
不需要过分的要求高覆盖率,因为维护测试代码也是耗精力的。


 

下篇文章介绍项目中我是怎么写测试代码的…^^


Go项目的测试代码(项目运用)

未完继续

----------------------------------------------
欢迎大家的意见和交流

 

博客:https://limingxie.github.io/

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言实战-创业进行时之创业伊始发布时间:2022-07-10
下一篇:
获取表单数据 - ing...go发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap