2010-09-14 9 views
7

Durante la lettura di un esempio di codice Asp.Net MVC che ha utilizzato MbUnit come è framework di test, ho visto che era possibile eseguire una singola prova contro molteplici possibilità di ingresso utilizzando un attributo di fila, in questo modo:Attributo di riga di MbUnit in NUnit?

[Test] 
[Row("[email protected]_test.com")] 
[Row("sdfdf dsfsdf")] 
[Row("[email protected]")] 
public void Invalid_Emails_Should_Return_False(string invalidEmail) 
{ 
    ... 
} 

Per favore vorrei sapere se esiste un equivalente NUnit dell'attributo Row di MbUnit, o comunque un modo elegante per ottenere questo risultato in NUnit. Grazie.

risposta

10

Credo che tu sia dopo l'attributo TestCase

[TestCase(12,3,4)] 
[TestCase(12,2,6)] 
[TestCase(12,4,3)] 
public void DivideTest(int n, int d, int q) 
{ 
    Assert.AreEqual(q, n/d); 
} 

http://www.nunit.com/index.php?p=testCase&r=2.5.7

+1

+1 - 'TestCaseAttribute' porta a molto più leggibile il codice di prova quando si utilizzano più parametri rispetto usando' ValuesAttribute' con 'SequentialAttribute'. Userei solo "ValuesAttribute" se volessi usare una combinazione diversa da quella specificata da "SequentialAttribute". –

+0

+1 quello che ha detto ... –

2

NUnits Sequential attribute fa esattamente questo.

La SequentialAttribute viene utilizzato su un test per specificare che dovrebbe NUnit generare casi di test selezionando singoli elementi dati previsti i parametri del test, senza generare ulteriori combinazioni.

Nota: se i dati del parametro è fornito da più attributi, l'ordine in cui NUnit utilizza gli elementi di dati non è garantita. Tuttavia, è possibile che rimanga costante per un dato runtime e sistema operativo.

Esempio Il seguente test sarà eseguito tre volte, come segue:

MyTest (1, "A")
MyTest (2, "B") MyTest (3, null)

[Test, Sequential] 
public void MyTest(
    [Values(1,2,3)] int x, 
    [Values("A","B")] string s) 
{ 
    ... 
} 

Dato il tuo esempio, questo sarebbe diventato

[Test, Sequential] 
public void IsValidEmail_Invalid_Emails_Should_Return_False(
    [Values("[email protected]_test.com" 
      , "sdfdf dsfsdf" 
      , "[email protected]")] string invalidEmail) 
{ 
    ... 
}