2012-12-24 4 views
16

Sto tentando di utilizzare NUnit con l'attributo valori in modo da poter specificare molti input diversi senza avere 100 test separati.Test NUnit con una serie di valori

Tuttavia ora mi sto rendendo conto che ci sono momenti in cui voglio usare lo stesso insieme di input ma su test molto diversi come quelli qui sotto.

Esiste un modo per specificare tutti i valori in un unico punto, come un array e utilizzare l'array per ciascun attributo valori?

Voglio assicurarmi che il test funzioni come 100 singoli test, invece di 1 test che esegue 100 valori.

Ho cercato nella documentazione di Nunit, ma non riesco a trovare un modo per farlo. Qualche idea?

Codice:

[Test] 
public void Test1([Values("Value1", "Value2", "Value3", ... "Value100")] string value) 
{ 
    //Run Test here 
} 

[Test] 
public void Test2([Values("Value1", "Value2", "Value3", ... "Value100")] string value) 
{ 
    //Run Test here 
} 

[Test] 
public void Test3([Values("Value1", "Value2", "Value3", ... "Value100")] string value) 
{ 
    //Run Test here 
} 

risposta

24

TestCaseSource attribute è adatto qui.

vedere Esempio:

private string[] commonCases = { "Val1", "Val2", "Val3" }; 

[Test] 
[TestCaseSource("commonCases")] 
public void Test1(string value) 
{ 
    .... 
} 

[Test] 
[TestCaseSource("commonCases")] 
public void Test12(string value) 
{ 
    .... 
} 
3

È possibile utilizzare FactoryAttribute i metodi di controllo, invece di ValuesAttribute su param. Ulteriori informazioni su questo here.

Modifica: Alexander diritti. FactoryAttribute era una parte temporanea dell'API. Il modo giusto è utilizzare TestCaseSourceAttribute