Go |单元测试的方法

Go提供了一套轻量级的测试框架。

需要进行单元测试的文件命明规则如下:在需要测试的包下面创建以“_test”结尾的go文件。如下图,在包Simplemath下建立了add.go和stack.go两个go文件,它们各自的测试文件是add_test.go和stack_test.go。

Go的单元测试函数分为功能测试函数和性能测试函数。这里先说功能性测试函数。

测试函数的声明要以TestXXX的形式开头,并且形参为 (t *testing.T)。比如两个文件和其对应的测试文件。在测试函数中,可以使用t.Errorf打印错误信息。

package Simplemath

func Add(a, b int) int {
	return a + b
}
package Simplemath

import "testing"

func TestAdd(t *testing.T) {
	re:=Add(1,1)
	if re!=3{
		t.Errorf("Add 方法出错了!")
	}

}
package Simplemath

import "fmt"

type Stack struct {
	arr []interface{}
}

func (s *Stack) CreateStack() *Stack {
	s.arr = []interface{}{}
	return s
}

func (s *Stack) push(a interface{}) {
	s.arr = append(s.arr, a)
}

func (s *Stack) pop() (a interface{}, error error) {
	if len(s.arr) == 0 {
		//fmt.Errorf可以打印错误信息
		error = fmt.Errorf("栈中没有元素")
	}
	a = s.arr[len(s.arr)-1]
	s.arr = s.arr[:len(s.arr)-1]
	return
	//return a,error
}
package Simplemath

import "testing"
//可以对方法分开测试,
//也可以对方法进行整体测试,这个时候需要考虑整体的输出结果,包括前面的处理,不是只考虑方法中
var stack Stack
func TestStack_CreateStack(t *testing.T) {
	stack.CreateStack()
	if stack.arr==nil{
		t.Errorf("初始化失败")
	}
}

func TestStack_push(t *testing.T) {
	stack.push(1)
	stack.push(2)
	stack.push(3)

	if len(stack.arr)!=3{
		t.Errorf("入栈失败!")
	}
}

func TestStack_Pop(t *testing.T) {
	stack.push(1)
	stack.push(1)
	stack.push(1)

	stack.pop()
	stack.pop()

	if len(stack.arr)!=3{
		t.Errorf("出栈失败!")
	}
}

在命令行测试的时候,可以在IDE中进行测试,也可以在通过命令行测试,这里主要讲命令行测试。

在测试之前首先要确保将项目根目录路径加入了GOPATH,可以使用go env 命令查看是否设置了。比如我的项目名为FristGo,则GOPATH=C:\Users\27124\IdeaProjects\FristGo。

在单元测试的时候,可以对整个包测试,对某个文件测试,对某个文件的某个方法测试。下面分别讲下具体方法。

(1)对包进行测试

之后进入到刚设置的目录中,在该路径的任何子路径下都能对整个包进行测试,比如这里对Simplmath进行测试。
对整个包中所有测试文件进行测试格式:go test + 包名

在这里插入图片描述

(2)对某个文件进行测试

在对文件进行测试的时候,要注意两点:

  • 需要进入具体的包,不然会提示错误,如下图。
  • 使用go test -v add_test.go add.go 的格式进行测试。即要加上源文件
  • 测试的结果是各个函数连续测试的结果,不是单独测试的结果,也就是说,上一个方法的处理结果会继续用到下一个方法

(3)对某个文件的某个函数进行测试

在对某个文件的某个方法进行测试的时候,也许要注意两点:

  • 需要进入具体的包,不然会提示错误,如下图。
  • 使用 go test -v -test.run TestRefreshAccessToken 的格式进行测试。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值