2011-08-18 8 views
6

私の職場では、約50のプロジェクトと約2000個のユニットテストを含むc#.netソリューションがあります。コードを変更した後は、変更をビルドサーバーに適用する前に、ソリューション内のすべてのテストを実行する必要があります。すべてのテストを実行するには約10〜15分かかります。私は考えていました - ちょっと、おそらく、私が作ったすべてのコードの変更を分析し、関連するテストメソッドだけを実行することを決めるプロセスがあるかもしれません。この種の分析が可能な場合、2000テストを実行する代わりに、コンピュータは15テストまたは100テストしか実行できませんでした。次に、生産性が非常に向上し、頭痛が減りました。 これを実装する方法や、そのようなソフトウェアが利用できるかどうかについては、誰でも知っていますか?コード依存ユニットテスト

答えて

2

C# Test Coverage Toolはこれを行うことができます。

  1. それはインクリメンタル楽器 最後のテスト・カバレッジ・実行以降に変更されたファイルだけ。

  2. 各ユニットテストのテストカバレッジ、およびどのファイルが関係しているかを追跡するために使用できます。ファイルが変更されると、ファイルは以前のバージョンと比較されます。一部の単体テストに関連するメソッド が以前に変更された場合、それらの単体テストを識別します。 テスト実行とカバレッジデータを関連づけ、識別された単体テストを再実行するには、そのプロセスを編成する必要がありますが、それはスクリプト作成のわずかな問題です。この理由は、テストカバレッジツールを任意のテストフレームワークで動作させるためです。

時間を節約するためにビルドサーバーで行うことができます。さらに重要なのは、変更をチェックインする前に、変更したコードの検証に必要なテストだけを実行できるように、各開発者にこれを提供できることです。

5

マルチプロジェクト環境で何が何に依存するのかは、実際には分かりません。理想的には:

  • あなたのユニットテストはユニットテスト真となり、そのうちの2000は、多分20秒で実行する必要があります。
  • ビルドサーバーのビルド時に長時間実行されるテストが設定されているので、何かを見逃してしまった場合にはかなり早い段階で通知されますが、個人的にはは、コミットする前にコードの変更に影響を受けたと思われるテストのみを実行することで、より選択的です。
+5

+1ユニットテストを統合テストから分離する。 http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – TrueWill

2

Visual Studio 2010 PremiumとUltimateには、「Test Impact」ツールがあります。

+0

NUnitテストとMSTestsだけでなく、ピックアップできるかどうか興味深い – sll

+0

+1 @DBM:すばらしいことは以前にもそれを知っていることは決してありません、http://blogs.msdn.com/b/phuene/archive/2009/12/07/test-impact-analysis-in-visual-studio-2010.aspx – sll

+0

@sllevこれはMSTestテストに限定されています。 – ckittel

0

私たちの環境では、NCrunch http://www.ncrunch.net/

を使用するには、プロジェクトを構築し、複数のスレッドを使用してバックグラウンドでのユニットテストを実行します。 失敗した単体テストを快く通知します。

NCrunchはあなたの必要とするものをほとんどしません。見てみましょう。

関連する問題