2009-10-23 11 views
12

私はこのように、さまざまなケースをテストするユニットテストを持っている:NUnitとTestCaseAttribute、パラメータのクロス結合が可能ですか?

public void Test1(Int32 a, Int32 b, Int32 c) 

だが、私はループせずに、テスト・コードを作成したいので、私はこのようなパラメータを指定するには、テストケースを使用したいとしましょう:

[TestCase(1, 1, 1)] 
public void Test1(Int32 a, Int32 b, Int32 c) 

はこの言うために、この属性を私のためにそれは可能です:最初のパラメータの

  • を、ここに値
  • のセットです3210は
  • 第二のパラメータについて、ここで第三のパラメータの値
  • のセットだ、ここで値今
  • の組、試験上記

のIEすべての組み合わせです。

[TestCase(new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 })] 
public void Test1(Int32 a, Int32 b, Int32 c) 

私は何かを見落としていますか?

答えて

13

NUnitのは、これを達成するためにCombinatorial属性と一緒に使用することができValues属性提供:

[Test, Combinatorial] 
public void Test1( 
    [Values(1,2,3,4)] Int32 a, 
    [Values(1,2,3,4)] Int32 b, 
    [Values(1,2,3,4)] Int32 c 
) 
{ 
    ... 
} 
+0

働いていた、と組合せが同様に明らかにデフォルトで、インテリセンスのドキュメントは、と言って、私はその特定せずに試してみましたそれはあなたが言ったように正確に働いた。本当にありがとう。 –

+1

@ LasseV.Karlsen 'Values'属性に加えて、[' Range'属性](http://www.nunit.org/index.php?p=range&r=2.5)も同様に使用できます。すべての値を明示的にリストする代わりに、範囲として指定することができます。だから、あなたの例では、 '[Values(1,2,3,4)]の代わりに' [Range(1,4,1)]で代用することができます。 –

関連する問題