NUnit和TestCaseAttribute,参数的交叉连接可能吗?

时间:2009-10-23 08:37:33

标签: c# nunit testcaseattribute

我有一个单元测试,可以测试各种情况,例如:

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

假设我想创建没有循环的测试代码,所以我想使用TestCase来指定这样的参数:

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

我是否有可能使用此属性这样说:

  • 对于第一个参数,这是一组值
  • 对于第二个参数,这是一组值
  • 对于第三个参数,这是一组值
  • 现在,测试上述
  • 的所有组合

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)

看起来不像,但也许我忽略了什么?

1 个答案:

答案 0 :(得分:13)

NUnit提供了Values属性,可以与Combinatorial属性一起使用来实现此目的:

[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
)
{
    ...
}