6.5. 一个带测试的演示包
这个演示用的包numbers含有一个函数Double,其参数为一个整数,返回值则是将该整数乘以2。这个包由三个文件组成:
第一个,包的实现,numbers.go:
package numbers
func Double(i int) int {
return i * 2
}
接下来是测试,numbers_test.go:
package numbers
import (
"testing"
)
type doubleTest struct {
in, out int
}
var doubleTests = []doubleTest{
doubleTest{1, 2},
doubleTest{2, 4},
doubleTest{-5, -10},
}
func TestDouble(t *testing.T) {
for _, dt := range doubleTests {
v := Double(dt.in)
if v != dt.out {
t.Errorf("Double(%d) = %d, want %d.", dt.in, v, dt.out)
}
}
}
最后是Makefile:
include $(GOROOT)/src/Make.inc
TARG=numbers
GOFILES= numbers.go include $(GOROOT)/src/Make.pkg
运行gomake构建并将这个包安装到$GOROOT/pkg/(可供系统上的所有程序使用)。
执行gotest测试会重建这个包,包括numbers_test.go文件,然后运行TextDouble函数。输出“PASS”表示所有测试都成功通过。把实现中的乘数从2改成3就能看到测试失败的报告。
更多细节请参考gotest文档和testing包的文档。