假設(shè)我在包中有一個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)出現(xiàn)錯誤。我用谷歌搜索了一下,發(fā)現(xiàn)以小寫開頭的函數(shù)不能在它們自己的包之外看到(這似乎是真的,因為大寫函數(shù)可以從測試中自由調(diào)用)。我還在某處讀到添加<...>_internal_test.go到測試文件可以解決我這樣的問題(tests/mypackage_internal_test.go):package mypackageimport ( "testing")func TestPrivate(t *testing.T) { mt := &MyType{} // Some test code} 但是有了這個,我只能得到undefined: MyType. 所以,我的問題是:如何測試內(nèi)部/私有方法?
2 回答

小怪獸愛吃肉
TA貢獻1852條經(jīng)驗 獲得超1個贊
為什么將測試放在不同的包中?go testing 機制_test
用作測試文件的后綴,因此您可以將測試放在與實際代碼相同的包中,避免您描述的問題。將測試放在單獨的包中并不是 Go 的慣用做法。不要試圖與圍棋約定作斗爭,這是不值得的,而且你很可能會輸?shù)暨@場斗爭。
- 2 回答
- 0 關(guān)注
- 199 瀏覽
添加回答
舉報
0/150
提交
取消