【发布时间】:2016-04-16 08:18:12
【问题描述】:
我在一个名为db 的包中有两个文件,其中一个定义了一些未导出的变量。另一个是测试文件,需要像这样使用这些变量:
(这是项目的结构)
$GOPATH/src/gitlab.com/myname/projectdir
├── main.go
└── db
├── add.go
└── add_test.go
(这是文件的简洁变体)
db/add.go
package db
func Add(x, y int) int {
return x + y
}
// some other functions that use a and b from `add_test.go`
db/add_test.go
package db
import (
"testing"
)
var (
a = 1
b = 2
)
// test function use variables from add.go
func testAdd(t *testing.T) {
result := add(a, b)
if result != 3 {
t.Error(err)
}
}
在db/ 目录中运行go test 已通过,但是一旦我运行go run main go,它就会产生以下错误:
db/add.go:: undefined: a
db/add.go:: undefined: b
好像add.go 在构建过程中无法从add_test.go 中找到a 和b。
main.go
package main
import (
"fmt"
"gitlab.com/myname/projectdir/db"
)
func main() {
res := db.Add(1, 2)
fmt.Println(res)
}
这是因为 add_test.go 在构建过程中没有包含吗?
【问题讨论】:
标签: go