我有一个数据库包。在db_test.go内部,我定义了MemoryDb()函数以返回内存数据库以进行测试。我可以在db_test.go中使用MemoryDb()很好,但我也想在其他软件包中使用它,即apkg的apkg_test.go。这似乎不起作用,对吗?
apkg_test.go
package apkg
import (
"db"
"testing"
)
func TestHelloWorld(t *testing.T) {
_ = db.MemoryDb()
}
db.go
package db
// Db struct
type Db struct {
}
db_test.go
package db
import "testing"
func TestHelloWorld(t *testing.T) {
_ = MemoryDb()
}
func MemoryDb() Db {
return Db{}
}
我得到的错误
/tmp/go/src/db$ go test
PASS
ok db 0.008s
/tmp/go/src/db$ cd ../apkg/
/tmp/go/src/apkg$ go test
$ apkg [apkg.test]
./apkg_test.go:9:6: undefined: db.MemoryDb
FAIL apkg [build failed]
假设不允许这样做,因为它在另一个软件包的_test中,是否有办法从其他软件包中的其他_test文件进入另一个软件包的_test文件?我宁愿将MemoryDb排除在外,但仍将单独的_test.go文件保存在单独的程序包中,并使MemoryDb不在已部署的二进制文件中(将其保存在_test.go文件中)。