有没有办法将NUnit TestCase属性与可选参数一起使用

时间:2014-03-05 11:11:41

标签: c# unit-testing nunit optional-parameters

我正在尝试运行一些测试用例,但我需要使其中一个参数可选。

我尝试过以下内容但是NUnit忽略了测试并打印了以下“忽略:提供的参数数量错误”

[TestCase(Result = "optional")]
[TestCase("set", Result = "set")]
public string MyTest(string optional = "optional")
{
    return optional;          
}

是否可以使用可选参数运行测试用例?

2 个答案:

答案 0 :(得分:5)

在这种情况下只需进行2次测试,nunit不支持可选参数:

[TestCase("set", Result = "set")]
public string MyTest(string optional)
{
    return optional;          
}

[TestCase(Result = "optional")]
public string MyTest()
{
    return MyTest("optional");          
}

答案 1 :(得分:0)

听起来你正试图在这里测试两个不同的东西,所以我会倾向于使用两个单独的测试,因为peer already pointed out

如果出于某种原因,您确实需要或希望在一次测试中使用它,您可以使用null或常量作为参数,并添加代码以在测试中处理它。注意不要让测试中的逻辑过于复杂(理想情况下,测试中不应该有任何逻辑......)。

const string NO_VALUE = "Just a const to identify a missing param";

[TestCase(null, Result = "optional")] // Either this... 
[TestCase(NO_VALUE, Result = "optional")] // or something like this
[TestCase("set", Result = "set")]
public void MyTest(string optional)
{
    // if(optional == null)  // if you use null
    if(optional == NO_VALUE) // if you prever the constant
    {
        // Do something
    }
    else{
        // Do something else
    }        
}