go语言测试
sunmiao a édité cette page il y a 7 ans

go语言测试

网上这篇文章更全面,建议阅读 Go怎么写测试用例

Go语言通过testing包提供自动化测试功能。包内测试只要运行命令 go test,就能自动运行符合规则的测试函数。 Go语言测试约定规则

  1. 一般测试func TestXxx(*testing.T) 测试行必须Test开头,Xxx为字符串,第一个X必须大写的[A-Z]的字母, 为了测试方法和被测试方法的可读性,一般Xxx为被测试方法的函数名。

  2. 性能测试func BenchmarkXxx(*testing.B) 性能测试用Benchmark标记,Xxx同上。

  3. 测试文件名约定 go语言测试文件名约定规则是必须以_test.go结尾,放在相同包下,为了方便代码阅读,一般go源码文件加上_test 比如源文件my.go 那么测试文件如果交your_test.go,her_test.go,my_test.go都可以,不过最好的还是my_test.go,方便阅读。

举例,源文件my.go

package my  
  
func add(x, y int) int {  
    return x + y  
}  

创建一个my_test.go文件,需要引入testing

package my  
  
import "testing"  
  
func TestAdd(t *testing.T) {  
    if add(1, 2) != 3 {  
        t.Error("test foo:Addr failed")  
    } else {  
        t.Log("test foo:Addr pass")  
    }  
}  
  
func BenchmarkAdd(b *testing.B) {  
    // 如果需要初始化,比较耗时的操作可以这样:  
    // b.StopTimer()  
    // .... 一堆操作  
    // b.StartTimer()  
    for i := 0; i < b.N; i++ {  
        add(1, 2)  
    }  
} 

运行测试 go test,输出:

PASS
ok github.com/my 0.010s

要运行性能测试,执行命令

  go test -test.bench=".*"

输出

PASS
BenchmarkAdd 2000000000 0.72 ns/op
ok github.com/my 1.528s

更多测试命名,用go help test go的测试是不是很好很强大!^_^