C# 如果我不想使用testcase属性指定参数,如何执行参数化testcase?

C# 如果我不想使用testcase属性指定参数,如何执行参数化testcase?,c#,nunit,nunit-console,C#,Nunit,Nunit Console,如果我不知道执行期间将传递的参数,如何从Nunit控制台执行下面的代码 [TestCase] public void ExecuteString(string someValue) { Console.WriteLine(someValue); } 我知道我们应该以这种格式传递参数[TestCase(“Values”)]。但是如果我不确定参数是什么?您不能以这种方式使用TestCase属性,但是有一个TestCaseSource属性可以处理变量和

如果我不知道执行期间将传递的参数,如何从Nunit控制台执行下面的代码

    [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");
       }
    }
}

为什么不确定参数是什么?你是程序员,你在测试用例中定义它们。如果您不知道它们,那么运行使用它们的代码有什么用呢?参数是动态的。所以我应该能够在不知情的情况下执行它们。在上面的代码中,我只知道参数的类型是字符串类型。我想知道您对单元测试的概念是否有与大多数人相同的想法。如果您的代码应该处理不同的类型,请使用不同的类型设置测试用例。单元测试使用固定的值来查看代码是否给出了预期的结果。如果事先不确定输入,则无法预测输出,因此无法进行测试。(是的,在某些情况下可能需要使用随机值,但不是一般情况下)如果您添加更多实际代码,您的问题可能会更清楚。我怀疑您是否想要单元测试
控制台。Writeline
。如果我尝试回答这个问题,这将是一个很大的答案。但是,是否可以从Nunit控制台调用参数化的testcase,而不使用TestCaseAttribute指定可能的参数?