È 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
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"
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 ...
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.
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. –
Dopo aver guardato il codice NUnit, penso che questo sia il meglio che possiamo fare senza modificare NUnit. Grazie per la tua risposta. –