15

MSTestで書かれたテストでVisual Studio 2010 Ultimateを使用します。単体テストと統合テスト*はMSTestで書かれています。私たちの定義によりMSTestを使用して単体テストと統合テストを別々に実行する

**、統合テストの実行には時間がかかり、および/または、そのようなデータベースやWebサービスなどの外部コンポーネントに出て呼び出すことMSTestをTestMethodです。*私が探している

統合テストを簡単に除外して、すべての統合テストを実行せずに単体テストだけを実行する方法です。これまで

私のアイデア:[Ignore]属性を持つ

  1. マーク統合テスト。これは機能しますが、統合テストを実行したいときには本当の苦痛です。

  2. 異なるテストタイプに[TestCategory]属性を割り当てます。これにより、それらを個別に実行することができますが、テストビューパネルでのみ実行できます。 Ctrl + R、A(ソリューションですべてのテストを実行する)、または他の同様のショートカット/ホットキーを使用することはできません。

  3. 統合テストは別のプロジェクトにありますが、プロジェクトレベルでの実行を停止するために何かできますか?トグルするのが簡単な限り。

  4. 統合テストを別のテストフレームワーク、たとえばNUnit。これは、それらをツーリングの観点から完全に分離しておくでしょう。

他に提案がありますか?これに役立つプラグインはありますか?

答えて

5

ランナーに応じて、すべてのランナーでテストを実行するかどうかは、テストクラスライブラリを含めるか含めないかによって、ランナーによって異なるテストを行うことをお勧めします。あなたは非ユニットテストをタグ付けするTestCategoryAttributeを使用するために、MSTestをを使用している場合

しかし、私はまた、お勧めします。その後、MSTestを使用してテストビューで実行するテストをフィルタリングすることができます。

Resharperと明らかにTestDriven.net(http://bit.ly/tmtYC2)のようなランナーは、一般的なユニットテストの実行からこれらのテストを除外することができます。

+0

そして、それは価値がありますので、私はMSTestランナーをこのような制限のために直接使用しません。 –

+0

BUILD 2012 VSチームは、スタジオテストランナーウィンドウのフィルタリングのデモを行いました。それがすべてのプラットフォームまたはウィンドウ8に適用されたのは100%明らかではありませんでした。明らかに、そのコードベースは非常に断片化しています; p – felickz

2

私は提案がありますが、あなたはそれを好まないでしょう。

完全にMSTestを放棄していますが、他の単体テストフレームワークはMSTestが進化してきており、ほぼ停止しています。はい、それはVSと直接統合することの大きな利点がありますが、私がVS 2011で変更されると誤解されていない場合は、カスタムユニットテストランナーの統合をネイティブサポートすることになります。

(注:私はMSTestをに多くの注意を払っていない告白ので、私はVS 2008と控えめにそれを使用するため、一部ではない本当かもしれない時間で停止)私はNUnitのを使用

から私のユニットテストを分離統合テストは別のクラスライブラリプロジェクトを使用します。次に、Gallioコマンドラインランナーを使用してテストの実行を自動化し、ユニットと統合テストを実行するための別々のスクリプトを設定できるようにしました。

最後に、個人的な意見は別として、TestDriven.netプラグインが特定のカテゴリのテストを実行するだけのサポートを持っている可能性があるので、確認することができます。

5

ユニットテストプロジェクトが別の名前空間にある場合は、キーボードショートカットCTRL+R, Tを使用して、現在のコンテキスト(つまりnamespace MyApp.Tests.Unit)ですべてのテストを実行できます。これを行うには、任意の単位テストクラスのネームスペース句の中括弧の直後にカーソルを置きます。

+0

これは良い提案ですが、問題は複数の単体テストプロジェクトがあることです。 – tjrobinson

関連する問題