2009-08-13 11 views
8

¿Es posible definir un filtro personalizado para que NUnit solo ejecute pruebas específicas? Tengo muchas de mis pruebas de Nunit marcadas con un atributo personalizado "BugId". ¿Es posible escribir un filtro para poder pasar un número y solo ejecutar las pruebas con ese atributo y número? Si es así, muestre una maqueta o código real.¿Son posibles los filtros personalizados en NUnit?

Respuesta

3

Comenzando con NUnit 2.4.6, los atributos NUnit no están sellados y las subclases serán reconocidas como sus clases base. Por lo tanto:

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

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

se puede llamar a la línea de comandos de la siguiente manera:

nunit-consola/include = "Prueba de Error # 1"

5

¿Los filtros necesitan usar su atributo personalizado, o podría usar un NUnit Category? Algo así como

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

... y luego usar la bandera /include=STR:

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

? Recomendaría subclasificar Categoría para hacer su atributo personalizado, pero no creo que eso le permita agregar un parámetro conmutable a su atributo ...

+0

Después de mirar el código de NUnit, creo que esto es lo mejor que podemos hacer sin modificar NUnit. Gracias por tu respuesta. –

0

Pensé que tenía una solución elegante para esto, pero, ay, sí no funciona como esperaba Esperaba (y quizás puedas con más esfuerzo) derivar de la clase IgnoreAttribute. Pensé que esto funcionaría:

[Test, BugId("411")] 
public void TestMethod() 
{ 
    // your test 
} 

public class BugIdAttribute : IgnoreAttribute 
{ 
    private string id; 

    public BugIdAttribute(string id) : base("Ignored because it is bug #" + id) 
    { 
     this.id = id; 
    } 
} 

Pero parece que hay más que eso. Perdón por publicar una respuesta que no es en realidad una respuesta, pero creo que es un buen trampolín para alguien que sabe más sobre los aspectos internos de nunit que yo.

+0

No quiero ignorar la prueba. Quiero ser capaz de ver que el error ha sido resuelto y ejecutar todas las pruebas asociadas con ese error. –

Cuestiones relacionadas