在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类、超类、抽象类等中的方法。
- 单元测试就是软件开发中对最小单位进行正确性检验的测试工作。
- 单元测试文件名必须以xxx_test.go命名
- 方法必须是TestXxx开头,建议风格保持一致(驼峰或者下划线)
- 方法参数必须 t *testing.T
- 测试文件和被测试文件必须在一个包中
Go自带的testing包
testing
为 Go 语言 package 提供自动化测试的支持。通过 go test
命令,能够自动执行如下形式的任何函数:
func TestXxx(*testing.T)
注意:Xxx
可以是任何字母数字字符串,但是第一个字母不能是小写字母。
在这些函数中,使用 Error
、Fail
或相关方法来发出失败信号。
要编写一个新的测试套件,需要创建一个名称以 _test.go 结尾的文件,该文件包含 TestXxx
函数,
如上所述。 将该文件放在与被测试文件相同的包中。该文件将被排除在正常的程序包之外,但在运行 go test
命令时将被包含。 有关详细信息,请运行 go help test
和 go help testflag
了解。
- 文件目录
- 测试文件和被测试文件必须在一个包中
- 测试文件和被测试文件必须在一个包中
- 被测试代码:
package fib
func Fib(n int) int {
if n < 2 {
return n
}
return Fib(n-1) + Fib(n-2)
}
- 测试代码:
package fib
import "testing"
func TestFib(t *testing.T) {
var (
in = 7
expected = 13
)
actual := Fib(in)
t.Log(actual)
if actual != expected {
t.Errorf("Fib(%d) = %d; expected %d", in, actual, expected)
}
}
- 执行:
go test fib_test.go fib.go
- 结果:
ok command-line-arguments 0.090s
testing包更多用法:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter09/09.1.html