2010-09-24 40 views
7

Tenemos varios cientos de clases de prueba, con unas pocas docenas de ellos marcado con los siguientes atributos: [TestFixture] [Explicit] [Categoría ("IntegrationTests")] por lo que sólo se ejecutará en nuestra durante la noche construcción automatizada. Los TestFixtures restantes no tienen una Categoría especificada (y tampoco están marcados explícitamente).Al ejecutar NUnit y especificar una categoría, ¿se pueden incluir todas las pruebas sin categoría?

Aquí es la tarea de NAnt que se están ejecutando para ejecutar nuestras pruebas:

<nunit2> 
    <test> 
     ... 
     <categories> 
      <include name="IntegrationTests" /> 
     </categories> 
     ... 
    </test> 
</nunit2> 

Esto, por supuesto, no se ejecutará ninguna de las pruebas no categorizados.

Me gustaría ser capaz de hacer algo como esto:

<nunit2> 
    <test> 
     ... 
     <categories> 
      <include name="*" /> 
      <include name="IntegrationTests" /> 
     </categories> 
     ... 
    </test> 
</nunit2> 

donde todas las pruebas no categorizados se ejecutará junto con las pruebas de integración. es posible? Si es así, ¿cuál es la sintaxis?

(Nota: estoy buscando ya sea una solución NAnt, como la anterior, o una solución de línea de comandos NUnit. Ciertamente puedo ejecutar NUnit dos veces con diferentes opciones, o poner categorías en todos mis TestFixtures. que estoy bien usando si es necesario, pero sería mejor ser capaz de especificar pruebas sin categoría directamente.)

Respuesta

0

No, dada su situación, no hay forma de hacer lo que quiera en una sola corrida de NUnit. Si eliminó el atributo explícito, puede hacerlo en una sola ejecución al excluir todas las pruebas categorizadas que no desee.

Básicamente, si realiza el salto a las categorías, todas las pruebas deben clasificarse.

+0

¿Estaría bien si hay una manera de garantizar que todas las pruebas estén categorizadas? – bacar

8

Estoy en el mismo barco, y me estaba frustrando hasta que descubrí que el atributo Category se puede aplicar no solo a un dispositivo de prueba o prueba, sino a un conjunto completo.

Tengo dos conjuntos de pruebas con pruebas que ejecuto localmente, y una más con pruebas que solo deberían ejecutarse en el servidor de compilación. Agregué este atributo en AssemblyInfo.cs en los primeros dos proyectos: [assembly: NUnit.Framework.Category("Always")]. El tercer proyecto de prueba usa atributos de categoría como [Explicit, Category("PublicDatabase")] como usted describe. El servidor de compilación invoca NUnit con /include=Always,PublicDatabase y tiene el resultado deseado: se ejecutan todas las pruebas en los dos primeros ensamblajes y solo se ejecutan las pruebas PublicDatabase en el tercer ensamblaje.

Cuando ejecuto NUnit localmente en los dos primeros proyectos, solo lo ejecuto en los ensamblados individuales, y no tengo que especificar categorías en absoluto.

+0

IIUC, esto no solo ejecutará "todas las pruebas no categorizadas". Ejecutará _todas las pruebas también (desde el ensamblado que tiene la categoría de nivel de ensamblaje), incluidas todas las pruebas que tienen una categoría explícita (supongo que las categorías son aditivas). – bacar

Cuestiones relacionadas