Goalng的测试框架testing

本文详细介绍了Golang自带的轻量级测试框架testing的使用方法,包括如何编写测试函数、执行测试、使用Skip方法跳过测试等。并通过一个具体实例展示了如何在_test.go文件中编写测试函数,并使用gotest命令执行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Golang有自带的轻量级测试框架testing。

1. 官方文档

官方文档

1.1 import “testing”

testing 提供对 Go 包的自动化测试的支持。通过 go test 命令,能够自动执行如下形式的任何函数:

func TestXxx(*testing.T)
其中 Xxx 可以是任何字母数字字符串(但第一个字母不能是 [a-z]),用于识别测试例程。在这些函数中,使用 Error, Fail 或相关方法来发出失败信号。

要编写一个新的测试套件,需要创建一个 名称以 _test.go 结尾的文件,该文件包含 TestXxx 函数,如上所述。 将该文件放在与被测试的包相同的包中。该文件将被排除在正常的程序包之外,但在运行 “go test” 命令时将被包含。

如果有需要,可以调用 *T 和 *B 的 Skip 方法,跳过该测试或基准测试:

func TestTimeConsuming(t *testing.T) {
  if testing.Short() {
  t.Skip(“skipping test in short mode.”)
  }
  …
}

1.2 type T

type T struct {
  // contains filtered or unexported fields
}
T 是传递给测试函数的一种类型,它用于管理测试状态并支持格式化测试日志。测试日志会在执行测试的过程中不断累积, 并在测试完成时转储至标准输出。

当一个测试的测试函数返回时, 又或者当一个测试函数调用 FailNow 、 Fatal 、 Fatalf 、 SkipNow 、 Skip 或者 Skipf 中的任意一个时, 该测试即宣告结束。 跟 Parallel 方法一样, 以上提到的这些方法只能在运行测试函数的 goroutine 中调用。至于其他报告方法, 比如 Log 以及 Error 的变种, 则可以在多个 goroutine 中同时进行调用。

2. 实例

1)建立要进行测试的单元函数

文件夹 testFile/test01/cal.go
package cal
func addUp(n1 int) int {
 return n1+10
}

2)以_test.go 结尾的文件,该文件包含 TestXxx 函数

文件夹 testFile/test01/cal_test.go
package cal
import (
 “testing”
)
func TestAdd(t *testing.T){
 res:= addUp(10)
 if res!=50 {
   t.Fatalf(“期望输出50,实际输出%v”,res)
 }
 t.Logf(“执行正确…”)
}

3)执行 go test -v
在这里插入图片描述

  1. go test :如果运行正确,无日志;错误时,输出日志。
  2. go test -v :运行正确或错误时,都输出日志。
  3. go test -v 文件名 文件名带的测试函数的源文件名:测试单独文件
  4. go test -v -test.run 函数名:测试单独函数

4)原理解析
在这里插入图片描述
可以看出,上面的实例中没有main包和main函数,但是执行的时候是怎样调用测试函数的呢?事实上,testing 框架中会自动将其测试函数引入,自建main函数对测试函数进行逐一的调用。

3. testing使用细节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值