Go单元测试中的包可见性

时间:2013-08-26 19:04:50

标签: unit-testing go

在Go中给出以下代码文件(名为server.go):

package glimpse

func SplitHeader() string {
return "hi there"
}

和随附的测试文件(server_test.go):

package glimpse

import (
"testing"
)

func TestSplitHeader(t *testing.T) {

    answer := SplitHeader()
    if answer == "" {
    t.Error("No return value")
}

}

为什么是以下命令:     go test server_test.go

返回

# command-line-arguments
./server_test.go:9: undefined: SplitHeader

我当然错过了一些灾难性的事情。

1 个答案:

答案 0 :(得分:6)

仅限使用

$ go test

从包目录中执行测试。如果将特定文件命名为go test的参数,则将考虑将这些文件用于构建测试二进制文件。这解释了“未定义”错误。

作为替代方案,请使用“导入路径”作为go test的参数,例如

$ go test foo.com/glimpse