美文网首页
Go项目的测试代码1(基础)

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

作者: 李明燮 | 来源:发表于2020-07-15 23:54 被阅读0次

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

先看看简单的测试代码

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

<br />
也可以写一个公用的比较方法, 自定义输出结果。

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项目的测试代码(项目运用)

未完继续


email: li_mingxie@163.com

相关文章

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

    最近写了测试代码,整理了一下。 先看看简单的测试代码 查看测试结构。 目前编写测试代码普遍公认的模板结构。 1)a...

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

    上一篇文章介绍了最基本的测试代码的写法。Go项目的测试代码(基础) 这里简单的共享一下我在项目中使用的方式。 项目...

  • Go语言单元测试和压力测试初次实践

    1. 待测试源码文件 gotest.go 2. 单元测试代码代码部分 gotest_test.go:这是我们的单元...

  • Go项目的测试代码3(测试替身Test Double)

    上一篇文章介绍了项目中测试代码的写法。Go项目的测试代码2(项目运用) 这里简单的共享一下测试替身。 当我们写测试...

  • Golang压力测试

    Go Test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要...

  • 测试一下Go语言goroutine的魅力

    本段测试代码的说明 这里用go语言简单的写了一个创建订单的业务流程,目的是测试一下Go语言的goroutine的魅...

  • 11 Go测试

    一、测试基础概述 Go语言内建一套基于表格驱动测试的机制,只需编写少量代码,就可对特定功能进行单元测试和基准测试(...

  • Go test工具链

    1.简介 go test命令用于对Go语言编写的程序进行测试。这种测试是以代码包为单位的。image.png 2....

  • golang覆盖测试检测

    工具 分析测试代码的覆盖率 1. 查看整体的覆盖率 cd 项目的根目录go test -cover 2. 覆盖率分...

  • golang第四天

    测试代码 hello.go 总结 网络请求,json,文件操作 打卡时间: 1:56

网友评论

      本文标题:Go项目的测试代码1(基础)

      本文链接:https://www.haomeiwen.com/subject/ikgshktx.html