9

30 以上のプロジェクトを含む Visual Studio ソリューションで NUnit を使用する方法を改善できるかどうかを知りたいです。

まず、ソリューション内のすべてのアセンブリに対して 1 つのテスト アセンブリを使用しますか?それとも、テスト アセンブリの数を抑えようとしますか? 多くのテスト アセンブリを作成することから始めましたが、ビルド時間の点でかなりのコストがかかっていると思います。

次に、長時間実行されるテストや特別な環境構成を必要とするテストを管理するために、どのような戦略を使用しますか? 単体テストの実行を自動化する MSBuild スクリプトを作成したいと考えていますが、時間がかかりすぎるテストやビルド マシンで動作しないテストをスキップする必要があります。

4

4 に答える 4

6

最初の質問に答えるには:

必要に応じて、カテゴリを使用してすべてを 1 つのアセンブリに整理することができます。ビルド時間が短縮されるかどうかについては、おそらく推測の危険がありますが、全体的にはそれほど多くはないと思います.

2番目に答えるには:

カテゴリ[Explicit]and属性を使用[Ignore]して、実行するテストと、実行する前に実行するように指示する必要があるテストを NUnit に指示できます。[Platform]「環境」に関する要件が正確に何であるかに応じて、他の属性を確認することもできます。

たとえば、実行時間の長いすべてのテストに Explicit タグを追加できます。次に、これらのテストを明示的に実行する必要があります。NUnit はそれらを自動的に実行しません。または、これらすべてのテストをカテゴリに追加してから、NUnit を実行するときに、そのカテゴリを実行しないように明示的に指示します。

于 2008-10-06T09:02:20.463 に答える
3

あなたの場合、いくつかのオプションに分類します。

  • 既存のプロジェクトを少数のプロジェクトに統合し、その結果、対応するテスト プロジェクトを統合する- 本当に 30 個のプロジェクト (たとえば、30 個のアセンブリ) が必要なのか、それとも単にそれらを組み合わせて依存関係の数とビルド時間を軽減する方がよいのかを考えてみてください。

  • テストを対応するプロジェクトに配置する- これは激しい反応を引き起こすかもしれませんが、考えてみてください: 膨大な数のテストが含まれていることを考えると、わずかに大きなアセンブリを取得するオーバーヘッドは、実際のプロジェクト数の 2 倍を管理するオーバーヘッドを削減する価値があるかもしれません。必要。

  • すべての単体テストをいくつかのプロジェクトに結合する- 各アセンブリをクリーンで個別に保つことに固執している場合は、すべての単体テストを結合することを選択できます。おそらく、相互の関連性が考慮されます。

したがって、ビルド時間が非常に重要な場合は、単体テストを含まないソリューション構成を作成することもできます。これは、オンデマンドでテストを実行している場合に特に便利です。継続的インテグレーションを使用している場合、問題にはなりません。複数の CI 構成を使用できます。ビルド テストを含むものと含まないものがあります。

于 2008-10-06T09:10:53.190 に答える
1

これは素晴らしい質問であり、長期にわたる大規模なプロジェクトの大量の単体テストのセットを管理することについて、いくつかの懸念を引き起こします。

私の戦略は、ビジネスまたはフレームワークに関連するソリューション内の各プロジェクトに対して 1 つの単体テスト プロジェクトを用意することです。単体テストは、プロジェクトの UI の側面をテストするのにはあまり適していないため、通常はスクリプト化されたテストに任せます。このプロジェクトは、開発者が一連の作業をコミットするたびに起動される継続的インテグレーション (CI) サーバーを使用して構築されます。また、CI サーバーはすべての単体テストを実行し、単体テストのカバレッジ統計を生成します。CI 環境では、MSBuild を使用してソリューションをビルドします。

時間の経過とともに、すべての単体テストが必要かどうかを評価する価値があります。回帰テストの作業の多くはスクリプト化されたテストに移行し、単体テストを維持するためのオーバーヘッドはコストがかかる可能性があります。理想的には、プロジェクトの存続期間中、すべての単体テストを維持したいと考えていますが、メンテナンスのオーバーヘッドが非常に大きくなる場合があります。経験則として、単体テストはビジネス ルールとソリューション フレームワークに対して維持されますが、UI、レポート、またはワークフローに対しては維持されません。明らかに、これはプロジェクトの詳細に依存します。

于 2008-10-06T09:22:15.603 に答える
0

余談ですが、TestDriven.Netは NUnit 用の優れた VisualStudio アドイン フロント エンドであり、オープン ソースの使用や学生にとっては無料です。

于 2008-10-06T11:08:11.707 に答える