为了账号安全,请及时绑定邮箱和手机立即绑定

Go:测试内部功能

Go:测试内部功能

Go
炎炎设计 2021-11-01 16:34:40
假设我在包中有一个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 的惯用做法。不要试图与围棋约定作斗争,这是不值得的,而且你很可能会输掉这场斗争。


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信