2012-01-24 6 views
7

大きなプロジェクトで作業する場合、ユニットテストフレームワークをコンパイルして開始するには少なくとも10秒かかることがあります。フィードバックループ時間を短縮する有効な方法はありますか?私は1つのユニットテストクラスとテストラン間で1つの他のクラスにわずかな変更を加えるつもりです。C#では、ユニットテストのフィードバックループを改善する良い方法は何ですか?

私はいくつかのアプローチを考えました。一つのテストクラスと依存関係をコンパイルして実行する方法はありません。ソリューションのプロジェクト数を増やすことで、各アセンブリのコンパイル時間を短縮できますが、それによって他の問題が発生する可能性があります。 NCrunchは、テストを手動で実行する必要性を減らすように見えますが、まだ完全なアセンブリをコンパイルします。

説明: ユニットテストクラスとテスト対象クラスをコンパイルするのに10秒間が含まれていました。 NCrunchに関する私の問題は、あまり強力でないコンピュータのせいかもしれない。

答えて

7

あなたは別のアセンブリに各テストクラスを配置する必要があります。アセンブリは実質的にコンパイルの単位です。 をテストクラスに変更した後に再コンパイルするのに10秒かかる場合は、1つのアセンブリでテストが多すぎるか、マシンが非常に遅いかのいずれかです。より良いマシンを手に入れること(またはより多くのメモリやSSDを使って既存のマシンを改善すること)が最善の方法であることは間違いありません。

私はNCrunchを自分で使用していますが、まだ完全なアセンブリをコンパイルしていますが、バックグラウンドで実行しているということは、通常は精神的に息をのむようになり、テストが再構築され実行されています。 NCrunchは、複数のプロセッサとRAMディスクを持っている場合にうまく機能します。構築する場所と使用できるプロセッサの数を設定できます。

あなただけ NCrunch(またはThe Mighty Mooseなど - 類似したもの)を考慮した場合しかし、実際には、それはあなたのために十分な速度ではありませんと仮定する前にそれをやってみる必要があり、それを試していません。

+0

私は一点ではっきりしていませんでした。 10秒間はテストされているクラスの変更後でした。私はNCrunchを試しましたが、私のコンピュータには電力が足りないと思います。 – BenMaddox

+0

私はNCrunchを使用しており、スムーズに動作します。確かに、私は最近のコンピュータとSSDを持っています。 –

+0

@BenMaddox:あなたのマシンはどのようなスペックですか?それを改善するのはどれほど現実的でしょうか? –

2

コードを書くときに、ユニットテストをバックグラウンドで実行するVisual StudioのアドオンであるAutoTest.Netをチェックアウトすることができます。

このようにして、単位テストをコンパイルエラー/警告のように扱い、比較的リアルタイムのフィードバックを得ることができます。

0

宣言的なユニットテストは、あなたのアーキテクチャが許せばコンパイル時間を実質的にゼロにします。たとえば、ユニットテストをデータベースに移動することは、大規模プロジェクトではうまくいっていました。

+0

私はまだテストされているクラスを変更しています。私は決してユニットテストをデータベースに移すことは考えていませんでした。 – BenMaddox

+0

はい、新しいテストが追加された場合に改善があります。 – henginy

関連する問題