Go+ 单元测试教程(4.20)
Posted Data-Mining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+ 单元测试教程(4.20)相关的知识,希望对你有一定的参考价值。
目录
Go+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
单元测试是编写符合规范的 Go+ 程序的重要组成部分。测试包提供了编写单元测试所需的工具,使用 go test 命令就可以启动单元测试。Go+ 提供了相关的单元测试方法,今天我们就来了解一下这方面的一些内容。
导入包
Go+ 在启动替代进程时,一般会使用的工具库是 testing 包,导入方式如下:
import (
"testing"
)
测试文件和测试方法的命名规则
我们在命令测试文件和测试方法时,是需要遵守一定命名规则的。
1)命名测试文件时,规则是 原文件名 + _test.gop,比如原文件是 add.gop,其对应的单元测试文件就是 add_test.gop。
2)命名测试方法时,规则是 Test + 原方法名,比如方法是 Print(),其对应的单元测试方法就是 TestPrint()。
示例代码:
func IntMin(a, b int) int
if a < b
return a
return b
func TestIntMinBasic(t *testing.T)
ans := IntMin(2, -2)
if ans != -2
t.Errorf("IntMin(2, -2) = %d; want -2", ans)
单元测试集
有时候,编写单元测试很可能是重复的,因此尝试使用表格驱动的方式来完成,其实就是把测试输入项和预期输出项列在单元测试表格中,只需要一次循环遍历就可以完成所有测试项的单元测试。
示例代码:
func TestIntMinTableDriven(t *testing.T)
var tests = []struct
a, b int
want int
0, 1, 0,
1, 0, 0,
2, -2, -2,
0, -1, -1,
-1, 0, -1,
for _, tt := range tests
testname := fmt.Sprintf("%d,%d", tt.a, tt.b)
t.Run(testname, func(t *testing.T)
ans := IntMin(tt.a, tt.b)
if ans != tt.want
t.Errorf("got %d, want %d", ans, tt.want)
)
效果演示
执行如下命令,开始启动单元测试。
go test -v
上述代码的执行结果:
== RUN TestIntMinBasic --- PASS: TestIntMinBasic (0.00s) === RUN TestIntMinTableDriven === RUN TestIntMinTableDriven/0,1 === RUN TestIntMinTableDriven/1,0 === RUN TestIntMinTableDriven/2,-2 === RUN TestIntMinTableDriven/0,-1 === RUN TestIntMinTableDriven/-1,0 --- PASS: TestIntMinTableDriven (0.00s) --- PASS: TestIntMinTableDriven/0,1 (0.00s) --- PASS: TestIntMinTableDriven/1,0 (0.00s) --- PASS: TestIntMinTableDriven/2,-2 (0.00s) --- PASS: TestIntMinTableDriven/0,-1 (0.00s) --- PASS: TestIntMinTableDriven/-1,0 (0.00s) PASS ok examples/testing-and-benchmarking 0.023s
以上是关于Go+ 单元测试教程(4.20)的主要内容,如果未能解决你的问题,请参考以下文章