我在 中定義了main.go無法在main_test.go. 但是,在一些在線教程中,我看到函數(shù)是可訪問的:我想了解其中的區(qū)別,以及如何以慣用的方式構(gòu)建這些函數(shù)。具體來說,我有一個包含多個二進(jìn)制文件的應(yīng)用程序:myapp/cmd/app/main.gomyapp/cmd/cli/main.gofunc main我目前在文件中運(yùn)行了很多簡單的單元測試邏輯main.go。我只是在測試單個函數(shù)并讓它們打印輸出,如果我能避免的話,我不會試圖調(diào)用“測試”套件的全部功能。由于此時我在 main.go 頂部的測試太長了,我想將它們移動到特定的測試文件中,例如:myapp/cmd/app/main_test.gomyapp/cmd/cli/main_test.go這適用于我的 makefile:# Makefileall: test buildbuild: go build -o cmd/app/main cmd/app/main.go go build -o cmd/cli/main cmd/cli/main.gotest: go test ./cmd/app/main_test.go go test ./cmd/cli/main_test.go如果我只想運(yùn)行我的測試文件,我想把這個項(xiàng)目放在我的app/main.go// cmd/app/main.gopackage mainfunc definedInMain(m string) string { // }func main() { m := definedInMain("1") fmt.Println(m) // all the rest of my app's logic...}并在我的main_test.go// cmd/app/main_test.gopackage main// no imports, I hope?func testDefinedInMain() { m := definedInMain("1") fmt.Println(m) }但是,這失敗了:undefined: definedInMainFAIL我很困惑,我必須將所有這些功能導(dǎo)入到我的main_test.go文件中(即使我嘗試,它也會建議"can't load package: ... myapp/cmd/app/main" in any of: ...")有沒有一種干凈、慣用的方法可以讓我在測試文件中測試我非常簡單的單元測試并在主文件中運(yùn)行我的函數(shù),而無需大量重寫導(dǎo)入或其他大量的重新架構(gòu)?從某些鏈接中,我的印象是,如果我創(chuàng)建一個main_test.go,導(dǎo)入將自行進(jìn)行(就像在這些示例中一樣)。https://medium.com/@thejasbabu/testing-in-golang-c378b351002d (其中反向函數(shù)未明確導(dǎo)入 reverse_test.go)https://tutorialedge.net/golang/intro-testing-in-go/ (其中 Calculate 函數(shù)未顯式導(dǎo)入 main_test.go)https://blog.alexellis.io/golang-writing-unit-tests/ (其中 Sum 函數(shù)未在 main_test.go 中顯式導(dǎo)入)所以,你可以看到我有點(diǎn)困惑教程免費(fèi)導(dǎo)入它們的功能,而我沒有,我只是想更好地理解魔法。是不是我的函數(shù) definedInMain 是私有的,因?yàn)樗切懙??我確實(shí)希望這個函數(shù)是私有的,但我希望它能以與在 main.go 中可用的方式相同的方式導(dǎo)出到 main_test.go 文件。我是否必須完全公開才能在另一個文件中進(jìn)行測試?這似乎不正確,例如,“只能在 go 中對公共方法進(jìn)行單元測試嗎?”
- 0 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報
0/150
提交
取消