2009-08-13 16 views
8

È possibile definire un filtro personalizzato in modo che NUnit esegua solo test specifici? Ho molti dei miei test Nunit contrassegnati con un attributo personalizzato "BugId". È possibile scrivere un filtro in modo da poter passare un numero e eseguire solo i test con quell'attributo e il numero? Se è così, mostra il mockup o il codice reale.I filtri personalizzati in NUnit sono possibili?

risposta

3

A partire da NUnit 2.4.6, gli attributi NUnit non sono sigillati e le sottoclassi verranno riconosciute come classi base. Così:

public class BugId : TestAttribute 
{ 
    public BugId(int bugNumber) : base("Test for Bug #" + bugNumber) { } 
} 

[BugId(1)] 
public void Test() {} 

può essere chiamato nella riga di comando come questo:

NUnit-console/include = "Test per Bug # 1"

5

I filtri devono utilizzare l'attributo personalizzato oppure è possibile utilizzare un NUnit Category? Qualcosa come

[Test] 
[Category("BugId-12234")] 
public void Test() 
{ 
    .... 
} 

... e quindi utilizzare la bandiera /include=STR:

nunit-console /include=BugId-12234 ... 

? Consiglierei la sottoclasse Category per creare il tuo attributo personalizzato, ma non credo che ti permetta di aggiungere un parametro commutabile al tuo attributo ...

+0

Dopo aver guardato il codice NUnit, penso che questo sia il meglio che possiamo fare senza modificare NUnit. Grazie per la tua risposta. –

0

Pensavo di avere una soluzione elegante a questo, ma ahimè, ha fatto non funziona come mi aspettavo. Speravo (e forse puoi con più impegno) di derivare dalla classe IgnoreAttribute. Ho pensato che questo avrebbe funzionato:

Ma sembra che ci sia più di questo. Ci scusiamo per aver postato una risposta che in realtà non è una risposta, ma penso che sia un buon trampolino di lancio per qualcuno che conosce meglio gli aspetti interni di nunit di me.

+0

Non voglio ignorare il test. Voglio essere in grado di vedere che il bug è stato corretto ed eseguire tutti i test associati a quell'errore. –

Problemi correlati