2014-02-06 40 views
3

使用c#在硒中使用Testcasesource開發測試用例。在NUnit中運行測試用例後,它將錯誤顯示爲「提供的參數的錯誤數量」。 這是我的測試用例代碼在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的看到的值。但它將錯誤顯示爲「提供的參數數量錯誤」。任何人都可以幫忙嗎?

+0

更換調用靜態數組一些神奇的'ReadData'功能使試樣更加有用再現/演示問題重現你的錯誤。到目前爲止,這是你的單詞與NUnit運行時錯誤 - 老實說,我比任何人的(包括我自己的)單詞更信任來自知名工具的錯誤。 –

+0

在我的邏輯中寫了readdata方法,我在這裏調用這個方法。 –

+0

和我讀取的數據代碼是 –

回答

6

標記爲TestCaseSource的方法應該返回一堆「TestCases」 - 其中每個TestCase都是測試方法所需的一組輸入。您的案例中的每個測試輸入集都必須包含4個字符串參數。

所以TestCaseSource方法應該返回一個包含內部4個成員數組的對象[]。看下面的例子

[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 
+0

現在我把它作爲public public static String [] exceldata = readdata(「C:\\ Users \\ Indium \\ Documents \\ Visual Studio 2010 \\ Projects \\ CHS \\ CHS \\ Data \\ Inputdata .xls「,」DATA「,」TestCase1「); –

+0

但有相同的錯誤 –

+0

是的。 NUnit將返回值讀作4個輸入參數集。謝謝 –

相關問題