Golang系列之单元测试快速入门

Golang系列之单元测试快速入门

1、前言

对写好的代码进行测试和调试,定位问题,是程序开发必须掌握的技能,在java中,我们可以使用junit进行测试,然后在golang里怎么进行单位测试?golang有轻量级的测试框架testing,也有命令go test sample_test.go这些命令,具体怎么使用,可以看一下本文简单介绍

2、mian函数里测试

有时候,要测试一个函数是否功能正常,有时候我们会直接写在main函数里,然后通过log框架或者fmt直接打印信息,验证,下面给出一个例子

package main

import "fmt"

func main() {
	res := addUpper(10)
	fmt.Printf("返回值res:%v", res)
}

func add(n1 int , n2 int) int {
	return n1 + n2
}

func addUpper(n int) int {
	res := 0
	for i := 0 ; i <= n ; i++ {
		res += i
	}
	return res
}


这种方法对于单个文件,代码量不多,其实也是可以的,但是对于一个庞大的项目,这种方法就显得很麻烦,特别是生产,我们难道为了测试去更改main函数,然后再重启,显然是不合理的。然后所有的测试业务都写在main函数,不利于管理,代码量一多就会变得复杂

3、单位测试入门

testing是golang里的一个轻量级的测试框架,可以用于单位测试,也可以用于性能测试,程序员可以基于这个框架写相应的单位测试用例,然后通过日志打印等方式进行debug调试,定位排查问题

使用很容易,基于原来的文件,sample.go,新建一个sample_test.do的测试文件,注意,必须命名为*_test.do

package main

import (
	"testing"
)


func TestAdd(t *testing.T)  {
	res := add(1,2)
	if res != 3 {
		t.Fatalf("error res %v" , res)
	}
	t.Logf("success res %v" , res)
}

func TestAddUpper(t *testing.T)  {
	res := addUpper(10)
	if res != 55 {
		t.Fatalf("error res %v" , res)
	}
	t.Logf("success res %v" , res)
}


注意:

  • 测试用例文件必须以_test.go结尾
  • 测试用例函数必须以Test开头,一般是Test+被测试的函数名
  • 测试函数形式参数必须是*testing.T
  • 出现错误,t.Fatalf打印错误日志并退出程序
  • 程序正常,t.Logf打印格式化的日志
  • 测试单个文件,要加上测试的原文件go test -v sample_test.go sample.go
  • 测试单个函数,加上方法名,go test -v sample_test.go TestAdd
  • 运行测试用例命令
    • cmd > go test :运行正确不打印日志,错误才会打印日志
    • cmd > go test -v :运行错误或成功,都打印日志

在goland里测试,测试失败的情况:
在这里插入图片描述
测试成功的情况:
在这里插入图片描述
也可以使用命令在cmd里测试,使用go test-v是不管成功失败都会打印日志,不加上只会打印失败的日志,成功的情况不打印

go test -v calculator_test.go calculator.go

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smileNicky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值