3

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 で値を確認できます。しかし、「提供された引数の数が間違っています」というエラーが表示されます。誰でも助けてもらえますか?

4

1 に答える 1

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 つの input-param-set として読み取ります。それぞれに 1 つの文字列が含まれます。1 つの文字列で 4 つのパラメーターを使用してパラメーター化されたテスト メソッドを呼び出そうとしています => 表示されているエラー。

たとえば、このように DivideCases を設定することでエラーを再現できます

private static int[] DivideCases = new int[] { 12, 3, 4 };  // WRONG. Will blow up
于 2014-02-06T05:14:18.993 に答える