如果我不想使用TestCase属性指定参数,如何执行参数化测试用例?

问题描述:

如果我不知道在执行期间传递的参数,如何从Nunit控制台执行下面的代码。如果我不想使用TestCase属性指定参数,如何执行参数化测试用例?

[TestCase] 
    public void ExecuteString(string someValue) 
    { 
     Console.WriteLine(someValue); 
    } 

我知道我们应该以这种格式[TestCase(“Values”)]传递参数。但是如果我不确定参数是什么?

+0

为什么你不确定参数是什么?你是程序员,你在测试用例中定义它们。如果你不知道它们,那么使用它们的代码有什么用处? – oerkelens

+0

参数是动态的。所以。我应该能够在不知情的情况下执行它们。我将只知道上面代码中字符串类型的参数类型。 –

+0

我想知道你是否对大多数人拥有的单元测试概念有相同的想法。如果您的代码应该处理不同的类型,请设置不同类型的测试用例。单元测试使用固定值来查看您的代码是否能为您提供预期的结果。在事先没有确定输入的情况下,您无法预测输出,因此您无法测试。 (是的,在某些情况下可能需要使用随机值,但通常不会) – oerkelens

您不能以这种方式使用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"); 
     } 
    } 
}