如果我不想使用TestCase属性指定参数,如何执行参数化测试用例?
问题描述:
如果我不知道在执行期间传递的参数,如何从Nunit控制台执行下面的代码。如果我不想使用TestCase属性指定参数,如何执行参数化测试用例?
[TestCase]
public void ExecuteString(string someValue)
{
Console.WriteLine(someValue);
}
我知道我们应该以这种格式[TestCase(“Values”)]传递参数。但是如果我不确定参数是什么?
答
您不能以这种方式使用TestCase属性,但是可以使用变量和运行时值的TestCaseSource属性。
它的工作原理如下所示。可能这是你在找什么?
[Test, TestCaseSource(typeof(string), nameof(SomeClass.someCases))]
public void Test(string someValue)
{
Console.WriteLine(someValue);
}
private class someClass
{
public static IEnumerable someCases
{
get
{
yield return
new TestCaseData("valuefornow");
yield return
new TestCaseData("valueforlater");
}
}
}
为什么你不确定参数是什么?你是程序员,你在测试用例中定义它们。如果你不知道它们,那么使用它们的代码有什么用处? – oerkelens
参数是动态的。所以。我应该能够在不知情的情况下执行它们。我将只知道上面代码中字符串类型的参数类型。 –
我想知道你是否对大多数人拥有的单元测试概念有相同的想法。如果您的代码应该处理不同的类型,请设置不同类型的测试用例。单元测试使用固定值来查看您的代码是否能为您提供预期的结果。在事先没有确定输入的情况下,您无法预测输出,因此您无法测试。 (是的,在某些情况下可能需要使用随机值,但通常不会) – oerkelens