2016-07-19 23 views
1

如果我運行下面的爲什麼`去測試 - 運行NotExist`傳遞?

go test -run NotExist 

的響應是PASS。看到我的測試文件不包含測試稱爲TestNotExist我期望上面的命令返回失敗

+1

因爲您指定的所有測試都沒有通過,換句話說,您沒有測試失敗。 – JimB

+0

這種行爲並沒有什麼意義,我期望它能說出類似「Test'NotExist''找不到的東西' – mozey

+0

這只是每個人都同意的行爲。通常如何在不執行任何測試的情況下運行基準測試,或者檢查測試編譯錯誤。 – JimB

回答

1

沒有-run選項go test運行所有測試。您使用-run選項不運行所有測試;到過濾掉,以排除測試(和你的需要名的非排他性測試比賽正規表達式的形式做到這一點 - 但,這是無關緊要的形式的討論點):

Command go, Test packages:

默認情況下,去測試需求沒有參數。它用當前目錄中的源代碼編譯和測試包,包括測試,並運行測試。

Description of testing flags:

-run regexp 
    Run only those tests and examples matching the regular expression. 

這是一個完全「正常」的結果,一個過濾過濾掉所有的測試,沒有測試仍然是一套仍需執行的測試。

當沒有測試FAIL時,它被認爲是測試運行PASSes。如果沒有測試匹配,則不會運行測試,也不會有測試失敗,因此測試運行將會通過。

+0

再次思考這個行爲確實有道理。我聽說它說你不能證明沒有錯誤。你只能測試他們的存在。如果沒有明確的失敗,則認爲它正在工作。令我感到困擾的是,如果我在命令中輸入錯字,我將不會收到警告。 – mozey

+1

@mozey同意。但是一個簡單的'go test'會顯示錯誤,這就是你應該用來測試/驗證的東西。如果您想快速測試一些更改,則只應使用'-run'選項。 – icza

相關問題