2013-06-20 28 views
5

我正在嘗試編寫一個接受字符串並且期望字符串分裂的測試用例。我不能在TestCase初始化List,所以我嘗試使用TestCaseSourceparams的說法,但是我得到帶有列表或參數的TestCase

錯誤數量的參數提供

有什麼辦法,我要完成我的最終目標?

public IEnumerable<TestCaseData> blah 
{ 
get 
{ 
    yield return new TestCaseData("hello World", "h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"); 
} 
} 

[TestCaseSource("blah")] 
public void testmethod(String orig, params String[] myList) 

回答

4

即使雙方你testmethodTestCaseData構造帶paramsTestCaseData解釋params不同:它試圖將它們映射一個-to-one的方法的參數進行測試。在你的情況下,NUnit預計testmethod與12參數,但你的方法只有兩個。這會導致您看到的錯誤。

爲了解決這個問題,您需要更改構造函數調用如下:

yield return new TestCaseData(
    "hello World" 
, new[] {"h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"} 
); 

現在你只傳遞兩個參數,第二個是必須傳遞到您的params String[] myList數組。

+0

我發誓我試過了,它向我大吼大約的對象初始值設定項....也許我只是瘋了。謝謝......它現在可行! –