2013-06-20 16 views
5

Sto provando a scrivere un testcase che accetta una stringa e si aspetta che la stringa divida. Non posso inizializzare un List in un TestCase, così ho provato ad utilizzare TestCaseSource con un argomento params, però hoTestCase con lista o parametri

Numero errato di argomenti fornito

C'è un modo per me per raggiungere il mio obiettivo finale ?

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) 

risposta

4

Anche se sia il vostro testmethod e TestCaseData costruttore prendere params, TestCaseData interpreta params in modo diverso: si cerca di mappare loro one-to-one per i parametri del metodo in fase di test. Nel tuo caso, NUnit si aspetta uno testmethod con 12 parametri, ma il tuo metodo ne ha solo due. Ciò causa l'errore che vedi.

Per risolvere questo problema, è necessario modificare la chiamata al costruttore come segue:

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

Ora si passa solo due argomenti, il secondo essendo una matrice che deve essere passato al params String[] myList.

+0

Giuro che ci ho provato e mi ha urlato dell'inizializzatore dell'oggetto .... forse sto diventando pazzo. Grazie ... funziona ora! –

Problemi correlati