web-dev-qa-db-ja.com

IgnoreAttributeを無視

1時間ごとの実稼働で自動的に実行されるMSTestテストがあります。これらのテストの1つは、実稼働環境で実行する準備がまだ整っていないため、[Ignore]属性でマークされています。
次に、ローカル環境でのテストの準備ができているため、ローカル環境で(のみ)そのテストを開始します。
テストコードの左側にあるReSharperのアイコンをクリックするか、ユニットテストセッションウィンドウの選択したテストを実行アイコンをクリックして、何も起こりません。

現在、[Ignore]行をコメントアウトして修正します。しかし、コードをチェックインする前にコメント文字(//)を削除することに注意する必要があります。

[Ignore] 'dテストを一時的に実行する別の方法はありますか?

39
brgerner

最近、このような問題が発生した場合、新しい Build Configuration を「Local Developer Debug」などの名前のVisual Studioプロジェクトに追加し、既存のデバッグ構成の設定を使用します。次に、「プロジェクト-> MyProjectNameのプロパティ->ビルド」に進み、「ローカル開発者デバッグ」が選択された構成であることを確認し、「LOCALDEVBUILD」を「条件付きコンパイルシンボル」に追加します。これにより、プリプロセッサディレクティブを使用して、コンパイル時にコードを「切り替える」ことができます。

#if (!LOCALDEVBUILD)
    [Ignore]
#endif

これがあなたが探しているものであるかどうかはわかりません...しかし、ビルドの意図に応じて特定のコードを実行/利用することができます(ビルド構成を介して)...この方法では、テストを無視したままにすることができますより「公式」なビルドですが、必要に応じて自由に実行できます。

37
Skonen

テストカテゴリ を使用して、自動テストに含めたくないテストメソッドをマークすることもできます。

[TestCategory("IgnoreOnBuild")]

したがって、[無視]属性を使用しません。そして、これをビルド定義のフィルターと組み合わせます。基本->自動テスト->テストソース->テストケースフィルター:

TestCategory!=IgnoreOnBuild
31
Lasse Normann

Testrunco​​nfigファイルを使用してテストを有効/無効にする他の方法があるようです。ただし、IgnoreAttributeを使用すると、コードと共にコンパイルされるため、簡単に切り替えることはできません。

ドキュメント から:

ユニットテストの無視属性は、テストの他の属性とソースコードとともに、ユニットテストのソースファイルにあります。つまり、[テストマネージャー]ウィンドウで単体テストを無効にし、後でMSTest.exeコマンドラインユーティリティを使用してテストを実行すると、テストは引き続き実行されます。ただし、Ignore属性を使用して単体テストをマークし、アセンブリをコンパイルしてから、MSTest.exeを使用してテストを実行すると、テストは実行されません。 Ignore属性がテストの一部になったため、実行されません。

3
Davin Tryon