假设我在包中有一个MyType带有私有方法的类型。我还有一个目录,我想在其中存储我的包的测试。这是这样的:(mt *MyType) private()mypackageteststests/mypackage_test.gopackage mypackage_testimport ( "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 mypackageimport ( "testing")func TestPrivate(t *testing.T) { mt := &MyType{} // Some test code} 但是有了这个,我只能得到undefined: MyType. 所以,我的问题是:如何测试内部/私有方法?
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
为什么将测试放在不同的包中?go testing 机制_test
用作测试文件的后缀,因此您可以将测试放在与实际代码相同的包中,避免您描述的问题。将测试放在单独的包中并不是 Go 的惯用做法。不要试图与围棋约定作斗争,这是不值得的,而且你很可能会输掉这场斗争。
- 2 回答
- 0 关注
- 170 浏览
添加回答
举报
0/150
提交
取消