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

时间:2014-09-18 19:39:24

标签: c# visual-studio visual-studio-2012 testing nunit

为什么我下面的String数组给出了一个错误,不是它们都是字符串??? “属性参数必须是属性参数类型”

的常量表达式,typeof表达式或数组创建表达式
[Test]
[TestCase(new string[]{"01","02","03","04","05","06","07","08","09","10"},TestName="Checking10WOs")]
public void Test(String[] recordNumber)
{
     //something..
} 

2 个答案:

答案 0 :(得分:7)

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

您可能希望使用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");
    }

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

见下面的截图。

enter image description here

希望这可以节省你一些时间。

答案 1 :(得分:2)

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

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

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