2 回答

TA貢獻1812條經驗 獲得超5個贊
您必須導入包才能使用該包。
去.mod:
module example.app
main.go:
package main
func F() {}
func main() {}
main_test.go
package main_test
import (
"testing"
"example.app" // import the main package
)
func TestF(t *testing.T) {
main.F()
}
上面的代碼假設 main*.go 與 go.mod 的 package 位于同一目錄中example.app。替換example.app為您的模塊的名稱。調整路徑以匹配您的應用程序。例如,如果 main*.go 文件位于cmd/example包含 go.mod 的目錄下的目錄中,則使用導入路徑example.app/cmd/example而不是example.app.
請注意,測試可以通過這種方式導入主包,但非測試代碼不能。

TA貢獻1775條經驗 獲得超11個贊
問題是它main_test與main.
要訪問其中的函數,main您需要main像這樣導入和訪問函數:main.F()
此外, notef以小寫字母開頭,因此不會從 package 中導出main。要在其中訪問它,main_test需要將其導出(可以通過將其更改為以大寫字母開頭來完成:F)。
或者,您可以將測試文件更改為在 package 中main。
使用注釋編輯:導入時main請注意導入路徑按目錄名稱。通常,Go 中的開發人員將他們的包放在與包同名的目錄中(例如,放在main名為 的目錄中main)。在您的情況下,包和目錄名稱不同,因此導入將import ".../folder1"不是import ".../main". 您仍然可以使用main.F()來訪問該功能:
package main_test
import (
"testing"
"../folder1" // use the full path to folder1 from the root of your module
)
func TestF(t *testing.T) {
main.F()
}
- 2 回答
- 0 關注
- 189 瀏覽
添加回答
舉報