我有一個測試軟件包,用於測試一些依賴於讀取配置的東西。我想運行的所有測試之前曾經讀到過這樣的配置,所以我試圖用TestMain(m *testing.M)
:TestMain not run
main.go:
package tests
import (
...
)
var logger = logging.MustGetLogger("tests")
func TestMain(m *testing.M) {
logger.Info("Initializing test suite")
viper.SetConfigName("config")
viper.AddConfigPath("..\\..\\")
err := viper.ReadInConfig()
if err == nil {
os.Exit(m.Run())
} else {
logger.Fatal("Could not read configuration")
}
}
和我在同一個目錄(包),另一個文件用測試。
repository_test.go:
package tests
import (
...
)
func TestCreation(t *testing.T) {
aa := myModule.CreateRepository()
assert.NotNil(t, aa)
}
我的問題是,由於配置不從文件中讀取測試失敗。當我嘗試調試Gogland中的測試時,TestMain
內部的斷點未被命中。當我從命令行運行測試時,我看不到TestMain
的任何打印輸出。
有什麼特別的我應該做,使其工作?從我在線閱讀的內容中瞭解到,如果我定義了TestMain(m *testing.M)
,那麼它將只運行一次包,這就是我應該編寫任何安裝或拆卸代碼的地方。
測試套件中的所有文件(包括定義'TestMain'的文件)必須以'* _test.go'結尾。重命名爲例如'main_test.go' – putu
@putu omg!那一定是吧。我現在覺得自己像個白癡。一旦我靠近我的電腦,就會檢查! – Dina
是的,事實確實如此。那麼,至少現在我確信這永遠不會再發生在我身上。 – Dina