5

TestCaseSource 関数を使用する NUnit テストがいくつかあります。残念ながら、必要な TestCaseSource 関数は初期化に時間がかかります。これは、フォルダー ツリーを再帰的にスキャンして、テスト関数に渡されるすべてのテスト イメージを見つけるためです。(または、実行するたびにファイル リスト XML から読み込むこともできますが、新しいイメージ ファイルの自動検出は引き続き必要です。)

ユーザーがノードをクリックするか、テスト スイートが実行されるまで、NUnit がテスト ケースを列挙しない (TestCaseSource 関数を呼び出さない) ように、TestCaseSource と共に NUnit 属性を指定することは可能ですか?

テスト プロジェクトにアクセスできない他のユーザーは、テスト プロジェクトのソース コードを変更することなく、新しいテスト イメージをフォルダーに追加する必要があるため、フォルダーに格納されているすべてのテスト イメージを取得する必要があることはプロジェクトの要件です。その後、テスト結果を表示できます。

一部の独断的な単体テスト担当者は、私が NUnit を使用して本来すべきではないことを行っていると反論するかもしれません。要件を満たす必要があることは認めざるを得ません。NUnit は、私の要件のほとんどを満たす優れた GUI を備えた非常に優れたツールであるため、適切な単体テストであるかどうかは気にしません。

追加情報(NUnit のドキュメントから)

オブジェクト構築に関する注意

NUnit は、テストのロード時にテスト ケースを見つけ、非静的ソースを使用して各クラスのインスタンスを作成し、実行するテストのリストを作成します。各ソース オブジェクトは、この時点で一度だけ作成され、すべてのテストが読み込まれた後に破棄されます。

データ ソースがテスト フィクスチャ自体にある場合、TestFixtureAttribute で提供されるフィクスチャ パラメーターの適切なコンストラクター、またはパラメーターが指定されていない場合は既定のコンストラクターを使用して、オブジェクトが作成されます。このオブジェクトはテストが実行される前に破棄されるため、これら 2 つのフェーズ間 (または異なる実行間) での通信は、パラメーター自体を介する場合を除いて不可能です。

テスト ケースを事前にロードする目的は、TestCaseSource とテストの実行の間の通信 (または副作用) を回避することのようです。これは本当ですか?これが、テスト ケースを事前にロードする必要がある唯一の理由ですか?

ノート:

http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.htmlに記載されているように、NUnit の変更が必要でした。

このオプションを NUnit の新しいバージョンに導入する計画があります。

4

1 に答える 1

0

GUI でテスト名を遅延ロードする方法がわかりません。これらのテストを別のアセンブリに移動することをお勧めします。そうすれば、他のすべてのテストをすばやく実行し、必要な場合にのみ低速の徹底的なテストをロードできます。

于 2011-04-29T17:07:12.947 に答える