Go语言学习19-样本测试

引言
上一篇笔者介绍了 Go 语言的 基准测试,其实在测试源码文件中还可以添加样本测试函数,但编写样本测试函数不需要使用 testing 代码包的 API。
下面我们来介绍一下 Go 语言的样本测试:
主要内容
1. 编写样本测试函数
样本测试函数的名称需要以 Example 作为开始。在这类函数的函数体的最后还可以有若干个注释行。它们作用是比较在该测试函数被执行期间,标准输出上出现的内容是否与预期的相符。但要想这些注释航被正确地解析,需满足下面几个条件:
-
这些注释行必须出现在函数体的末尾,且在它们和作为当前函数体结束符的“}”之间没有任何代码。否则,注释行对于样本测试来说是无效的。
-
在第一行注释中,紧跟在单行注释前导符//之后的永远应该是Output:,否则这些注释行对于样本测试来说是无效的。
-
在Output: 右边的内容以及后续注释行中的内容都分别代表了标准输出中的一行内容。
如下一个测试源码文件 et_test.go,位于工作区 src 下的 testing/et 代码包中:
package et
import (
"fmt"
)
func ExampleHello() {
fmt.Println("Hello, Huazie")
// Output: Hello, Huazie
}
2. 样本测试的运行
使用 go test 命令对上面的源码文件 et_test.go 进行测试,运行截图如下:

调用 fmt.Println 函数所产生的打印内容并不会真正地出现在标准输出上,而只会被用于与样本注释行中的内容做对比。现在修改 fmt.Println 中内容为 Hello, Huazie1,运行结果截图如下:

现在将样本测试函数 ExampleHello 修改成这样:
func ExampleHello() {
for i := 0; i < 3; i++ {
fmt.Println("Hello, Huazie")
}
// Output: Hello, Huazie
// Hello, Huazie
// Hello, Huazie
}
运行截图如下:

测试仍然通过,不过需要注意,在样本测试函数的函数体末尾的多个样本注释行必须是连续的,在它们之间不能间隔任何行,即使是空行也不行。命令程序只会把在样本测试函数的函数体中的紧挨着当前函数体结束符 } 的注释行视为样本注释行。如果一个样本测试函数中没有任何样本注释行,那么这个函数仅仅会被编译而不会执行。
3. 样本测试函数的命名
样本测试函数命名规则:
-
当被测试对象是整个代码包时,样本测试函数的名称应该是Example,即直接以样本测试函数名的统一前缀作为函数名称。
-
当被测试对象是一个函数时,对于函数F,样本测试函数的名称应该是 ExampleF。
-
当被测试对象是一个类型时,对于类型T,样本测试函数的名称应该是 ExampleT。
-
当被测试对象是某个类型中的一个方法时,对于类型T的方法M,样本测试函数的名称应该是 ExampleT_M。
如果需要在样本测试函数的名称上添加后缀,那么需要用下划线把该后缀与名称的其他部分分隔开。并且,该后缀的首字母必须小写。例如:针对类型 T 的方法 M 且需要加入后缀 basic 的样本测试函数的名称应该是 ExampleT_M_basic。
结语
本篇我们讲解了Go语言的样本测试,下一篇我们了解Go语言的测试运行记录和覆盖率的内容,敬请期待!!!
- 随机文章
- 热门文章
- 热评文章
- 探索内心:爱情心理测试,揭示你的爱情观和未来关系心理测试爱情亲情友情的排序
- 探索门萨智商测试:入会标准评估题的奥秘门萨智商入门测试
- 智力测试:科学方法与应用智力测试最权威的方法
- Java WebSocket 聊天系统
- 免费测你的性格像《怪你过分美丽》中的谁
- 测你的性格像《且听凤鸣》中的谁
- 免费在线测试 心理测你有什么能力惊人
- 心理在线测试 测测你有没有能力
- Java 面向对象设计:如何写出高内聚、低耦合的代码?
回归分析



