2013-06-20 5 views
5

Ich versuche, einen Testfall zu schreiben, der eine Zeichenfolge annimmt und erwartet, dass die Zeichenfolge aufgeteilt wird. Ich kann keine List in einem TestCase, initialisieren und so versuchte ich TestCaseSource mit einem params Argumente, aber ichTestCase mit Liste oder Parameter

Falsche Anzahl von Argumenten

zur Verfügung gestellt bekommen Gibt es eine Möglichkeit für mich, mein Endziel zu erreichen ?

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) 

Antwort

4

Auch wenn beide Ihre testmethod und TestCaseData Konstruktor params nehmen, interpretiert TestCaseDataparams anders: es versucht, sie eins zu eins auf die Parameter des Verfahrens getestet abzubilden. In Ihrem Fall erwartet NUnit eine testmethod mit 12 Parametern, aber Ihre Methode hat nur zwei. Dies verursacht den Fehler, den Sie sehen.

um dieses Problem zu beheben, müssen Sie den Konstruktor Aufruf wie folgt ändern:

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

Jetzt sind vorbei Sie nur zwei Argumente, die zweiten ein Array sein, die Ihre params String[] myList übergeben werden müssen.

+0

Ich schwöre, ich habe es ausprobiert und es hat mich über den Objektinitialisierer angeschrien ... vielleicht werde ich einfach verrückt. Danke ... es funktioniert jetzt! –