C# 有没有办法将NUnit TestCase属性与可选参数一起使用
我正在尝试运行一些测试用例,但我需要使其中一个参数可选 我尝试了以下方法,但NUnit忽略了测试并打印了以下“忽略:提供的参数数量错误”C# 有没有办法将NUnit TestCase属性与可选参数一起使用,c#,unit-testing,nunit,optional-parameters,C#,Unit Testing,Nunit,Optional Parameters,我正在尝试运行一些测试用例,但我需要使其中一个参数可选 我尝试了以下方法,但NUnit忽略了测试并打印了以下“忽略:提供的参数数量错误” 是否可以使用可选参数运行测试用例?只需进行2次测试在这种情况下,nunit不支持可选参数: [TestCase("set", Result = "set")] public string MyTest(string optional) { return optional; } [TestCase(Result = "optiona
是否可以使用可选参数运行测试用例?只需进行2次测试在这种情况下,nunit不支持可选参数:
[TestCase("set", Result = "set")]
public string MyTest(string optional)
{
return optional;
}
[TestCase(Result = "optional")]
public string MyTest()
{
return MyTest("optional");
}
听起来你想在这里测试两个不同的东西,所以我倾向于使用两个单独的测试 如果出于某种原因,您确实需要或希望在一个测试中使用它,您可以使用
null
或常量作为参数,并添加代码以在测试中处理它。但要小心不要让测试中的逻辑太复杂(理想情况下,测试中不应该有任何逻辑…)
对于NUnit的当前版本,这是不可能的。但我相信这将是一个有意义的增强即将到来的v3,这是目前正在开发中。您可以在.Oops上打开此功能的功能请求,以删除该功能。现在修好了。我的观点是,您可以传递其他指示不应传递任何内容的内容(如使用可选参数时)。这样,您可以在某种程度上伪造可选参数行为。有点像黑客,但应该有用。
[TestCase("set", Result = "set")]
public string MyTest(string optional)
{
return optional;
}
[TestCase(Result = "optional")]
public string MyTest()
{
return MyTest("optional");
}
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
}
}