2016-07-19 13 views
1

私は、次の`テスト実行 - NotExist`をパスするのはなぜですか?

go test -run NotExist 

応答を実行するとPASSです。私のテストファイルにはTestNotExistというテストが含まれていないので、私は上記のコマンドがFAILを返すことを期待しています。

+1

あなたが指定したすべてのテストは、どれも渡されなかったか、渡されたか、言い換えればテストの失敗がなかったためです。 – JimB

+0

その動作は本当に意味をなさない、私はそれが "Test 'NotExist' not found"のようなものを言うことを期待するだろう – mozey

+0

それはみんなが同意した動作です。テストを実行せずにベンチマークを実行する方法や、テストコンパイルエラーをチェックする方法がよくあります。 – JimB

答えて

1

-runオプションなしgo testすべてのテストを実行します。 -runオプションを使用すると、すべてのテストを実行しない;

: - にフィルタアウトは、テスト(これは議論のポイントは無関係形態であり、あなたが 一致正規表現パターンに非、排除テストの名前を必要とする の形でこれを行う)を除外します

Command go, Test packages:

デフォルトでは、テストには、引数を必要としない行きます。テストを含む現在のディレクトリのソースを使用してパッケージをコンパイルおよびテストし、テストを実行します。

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

Description of testing flags:

それフィルタリングは何のテストがまだ実行する必要がある一連のテストに残っていないことを、すべてのテストをフィルタリングすることを完全に「ノーマル」な結果です。

テストFAILがない場合は、テスト実行パスと見なされます。テストが一致しない場合、テストは実行されず、テストはFAILされないため、テスト実行はPASSになります。

+0

このことについてもう一度考えてみてください。私はあなたがエラーがないことを証明することはできないと言ったと聞いたことがあります。彼らの存在をテストすることしかできません。明示的に何も失敗しなければ、それが動作していると仮定します。私を悩ますことは、私がコマンドでタイプミスをした場合、私は警告を出さないということです。 – mozey

+1

@mozey同意します。しかし、単純な 'go test'はエラーを明らかにするでしょう。それはテスト/検証に使うべきものです。いくつかの変更をすばやくテストする場合は、 '-run'オプションだけを使用してください。 – icza

関連する問題