2009-05-15 11 views
33

Nunitを使用して、特定のディレクトリ内のすべてのファイル名を読み込み、各ファイルのテストを作成するテストフィクスチャを作成できます。NUnitで動的にテストを作成する

ディレクトリをスキャンしてすべてのテストを実行するテストメソッドを簡単に書くことができますが、NUnitを実行すると、それぞれのテストを個別に見ることができます。

これも可能ですか?

答えて

46

私は

は一つのテストケースを持って、そしてその後、すべての読み取りにGetTestCasesを書くので

[Test, TestCaseSource("GetTestCases")] 
public void TestFile(string filename) 
{ 
    //do test 
} 

のような属性TestCaseSourceでそれをマークし、私の目的に合った方法を見つけましたディレクトリ内のファイル名

private static string[] GetTestCases() 
{ 
    return GetAllFilesInCurrentDirectory(); 
} 

次にNUnitを起動すると、テストのリストが表示されますテストファイルの下に表示されます。

+0

ニースとシンプル。属性は、ドキュメント(v2.5.2を参照)に記述されているように、かなり柔軟です。http://nunit.com/index.php?p=testCaseSource&r=2.5.2 –

+0

NUnit rocks !!それは物事をより簡単にしました。私は統合テストにこの機能を使用しています – AksharRoop

+0

ReSharperテストランナーで動作させるにはどうすればいいですか?テストセッションでスタックを表示する代わりに、エラーを表示してメッセージボックスに失敗します。 – moudrick

3

data driven test cases NUnit拡張を試してください。あなたが時間をかけて、そのディレクトリにファイルを追加することになるだろうと、一般的なテストへの入力として渡すファイル名のセットを持っていないれ場合

+0

+1は面白そうです – bendewey

1

、STDのDISTRIBポストV2のRowTest NUnit extension(一部を使用してみてください。 4.7) - 単一のノードの下にグループ化されたGUIで、各テストケースと入力の組み合わせを個別に見ることができます。

あなたはは、そのディレクトリにファイルを追加しようとしている場合、私は、実行時に取得したファイルのリストをループし、各ファイルパスを持つ汎用テストメソッドを呼び出し、単一のNUnitのテストケースを記述します。 collecting parameterを使用して、失敗したテストファイル名を収集します。最後にアサートします。あなたは個々のテストケースを個別に見ることはできませんが、読みやすいシンプルなテストコードがあります。

Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles)) 
+0

何千ものテストがない限り、数時間かかることがあります。 – eocron

0

これはあまりわかりにくいですが、過去にスクリプトを使用して私のコードを生成し、個々のテストケースとして実行できるようにしました。

関連する問題