c#属性参数必须是常量表达式

Guc*_*mer 7 c# testing nunit visual-studio visual-studio-2012

为什么我下面的String数组给出了一个错误,不是它们都是字符串??? "属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式"

[Test]
[TestCase(new string[]{"01","02","03","04","05","06","07","08","09","10"},TestName="Checking10WOs")]
public void Test(String[] recordNumber)
{
     //something..
} 
Run Code Online (Sandbox Code Playgroud)

Mat*_*ius 9

这不能回答问题的标题,但它解决了您的具体问题.

您可能希望使用TestCaseSource它,它允许您将多个测试用例场景传递到相同的测试机制中,并且您可以根据需要使用复杂的结构.

    [Test]
    [TestCaseSource("TestCaseSourceData")]
    public void Test(String[] recordNumber, string testName)
    {
        //something..
    }

    public IEnumerable<TestCaseData> TestCaseSourceData()
    {
        yield return new TestCaseData(new string[] {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10"}, "Checking10WOs");
    }
Run Code Online (Sandbox Code Playgroud)

它会发现第一个参数是recordNumber第二个参数testName

看下面的截图.

在此输入图像描述

希望这能为您节省一些时间.


Pat*_*irk 3

这些字符串都是常量,但它们所在的数组不是。试试这个:

[Test]
[TestCase("01","02","03","04","05","06","07","08","09","10", TestName="Checking10WOs")]
public void Test(String recordNumber)
{
     //something..
} 
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为TestCaseAttribute将其案例作为params列表接受。