假设我在包中有一个MyType带有私有方法的类型。我还有一个目录,我想在其中存储我的包的测试。这是这样的:(mt *MyType) private()mypackageteststests/mypackage_test.go
package mypackage_test
import (
"testing"
"myproj/mypackage"
)
func TestPrivate(t *testing.T) {
// Some test code
}
但是,当我运行时go test,cannot refer to unexported field or method my package.(*MyType)."".private)出现错误。我用谷歌搜索了一下,发现以小写开头的函数不能在它们自己的包之外看到(这似乎是真的,因为大写函数可以从测试中自由调用)。
我还在某处读到添加<...>_internal_test.go到测试文件可以解决我这样的问题(tests/mypackage_internal_test.go):
package mypackage
import (
"testing"
)
func TestPrivate(t *testing.T) {
mt := &MyType{}
// Some test code
}
但是有了这个,我只能得到undefined: MyType. 所以,我的问题是:如何测试内部/私有方法?
小怪兽爱吃肉
相关分类