7

大規模なプロジェクトで作業する場合、単体テストフレームワークをコンパイルして開始するのに少なくとも10秒かかる場合があります。フィードバックループ時間を短縮する効果的な方法はありますか?テスト実行の間に、1つの単体テストクラスと他の1つのクラスにわずかな変更を加えるつもりです。

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

明確化:10秒には、単体テストクラスとテスト対象のクラスをコンパイルする時間が含まれていました。NCrunchに関する私の問題は、コンピューターの性能が低いことが原因である可能性があります。

4

3 に答える 3

7

各テストクラスを別々のアセンブリに配置する必要があります。アセンブリは事実上、コンパイルの単位です。テストクラスを変更しただけで再コンパイルに10秒かかる場合は、1つのアセンブリでテストが多すぎるか、マシンの速度が非常に遅いことを示しています。より良いマシンを手に入れること(またはより多くのメモリまたはSSDを備えた既存のマシンを改善すること)が前進するための最良の方法である可能性があります。

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

NCrunch(またはThe Mighty Mooseなど-同様のもの)のみを検討したが、実際には試していなかった場合は、十分な速度が得られないと想定する前に、試してみる必要があります。

于 2012-01-24T13:58:53.227 に答える
2

AutoTest.Netをチェックアウトすることもできます。これは、コードを記述しながら単体テストをバックグラウンドで実行するVisualStudioのアドオンです。

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

于 2012-01-24T13:51:29.693 に答える
0

宣言型単体テストは、アーキテクチャで許可されている場合に限り、コンパイル時間を効果的にゼロにします。たとえば、大規模なプロジェクトでは、単体テストをデータベースに移動することでうまくいきました。

于 2012-01-24T13:57:52.080 に答える