聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

Go 模块测试

2013-04-01 13:01 浏览: 1400212 次 我要评论(0 条) 字号:

Go 很多地方都透露着“约定大于配置”的理论,比如测试、可见性、语法等等。

本文示例模块为:foo.go,则对应的测试模块为:foo_test.go,测试版本为:go v1.0.3。

先写好示例代码: foo.go

package foo

func Add(a, b int) int {
return a + b
}

对应的测试代码:foo_test.go

package foo

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")
}
}

到这里可以运行测试了:

$ go test
PASS
ok _/Users/smallfish/test/go/foo 0.080s

或者详细一点的输出:

$ go test -v
=== RUN TestAdd
--- PASS: TestAdd (0.00 seconds)
foo_test.go:9: test foo:Addr pass
PASS
ok _/Users/smallfish/test/go/foo 0.013s

默认测试函数是以“Test”开头,比如:TestXXX。而性能测试代码是以“Benchmark”开头。

下面来简单一段性能测试代码:

func BenchmarkAdd(b *testing.B) {
// 如果需要初始化,比较耗时的操作可以这样:
// b.StopTimer()
// .... 一堆操作
// b.StartTimer()
for i := 0; i < b.N; i++ {
Add(1, 2)
}
}

跑一下性能测试:

$ go test -test.bench=".*"
PASS
BenchmarkAdd 2000000000 1.27 ns/op
ok _/Users/smallfish/test/go/foo 2.702s

更多请参考:“go help test” 命令和 testing 模块

END



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复