nunit中提供的参数数量错误

时间:2014-02-06 04:37:54

标签: c# selenium arguments nunit testcasesource

使用c#在selenium中使用Testcasesource开发测试用例。在NUnit中运行测试用例后,它将错误显示为“提供的参数数量错误”。 这是我的测试用例代码

[TestFixture]
class testcases 
{

   static String[] exceldata= readdata("Inputdata.xls", "DATA", "TestCase1");


    [SetUp]
    public void Setup()
    {
        //setupcode here

    }
   [Test, TestCaseSource("exceldata")]
    public void Sample (String level,String Username,String password,String FirstName)
    {
       //testcase code here

    }

    [TearDown]
    public void TearDown()
    {
        tstlogic.driverquit();
    }

检索到4个值,我可以看到NUnit中的值。但它将错误显示为“提供的参数数量错误”。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

标记为TestCaseSource的方法应该返回一堆“TestCases” - 其中每个TestCase是测试方法所需的一组输入。您案例中的每个测试输入集必须有4个字符串参数。

因此,TestCaseSource方法应该返回一个包含内部4个成员数组的object []。请参阅以下示例

[Test, TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
    Assert.AreEqual( q, n / d );
}

static object[] DivideCases =
{
    new object[] { 12, 3, 4 },
    new object[] { 12, 2, 6 },
    new object[] { 12, 4, 3 } 
};

在您的情况下,我认为您的testCaseSource方法返回4个字符串。 NUnit将其读作4个输入参数集...每个包含一个字符串。尝试使用4个参数调用参数化测试方法,其中包含一个字符串=>你看到的错误。

E.g。你可以通过像这样设置DivideCases来重现你的错误

private static int[] DivideCases = new int[] { 12, 3, 4 };  // WRONG. Will blow up