2010-05-27 16 views
12

He creado un conjunto de pruebas en NUnit que hace referencia a varios dispositivos de prueba de unidades distintas en varios conjuntos.NUnit no se ejecuta Pruebas de Suite

He usado más o menos el código de ejemplo de NUnit's docs:

namespace NUnit.Tests 
{ 
    using System; 
    using NUnit.Framework; 
    using System.Collections; 

    public class AllTests 
    { 
     [Suite] 
     public static IEnumerable Suite 
     { 
      get 
      { 
       ArrayList suite = new ArrayList(); 
       suite.Add(new VisionMap.DotNet.Tests.ManagedInteropTest.DotNetUtilsTest()); 
       return suite; 
      } 
     } 
    } 
} 

Mi objetivo es añadir varias pruebas a la lista anterior por lo que todos ellos se puede ejecutar en un lote.

Pero cuando intento cargar el archivo DLL en la interfaz gráfica de usuario de NUnit me sale esto: alt text

¿Qué estoy haciendo mal?

Soy consciente de que los documentos dicen que la GUI no ejecutará suites, pero también he probado la consola. ¿Alguien puede decirme por favor para qué son buenas las Suites y cómo puedo usarlas para lograr mi objetivo?

Estoy usando nunit 2.5.0.9122.

Editar

Bueno, no hay respuestas son próximas. Encontré una solución alternativa al final: Categorías. Agrupe los accesorios de prueba dándoles las categorías apropiadas y luego puedo ejecutar un subconjunto de ellos en lote, mientras sigo ignorando otro subconjunto.

Aún así, es muy extraño que esta característica de Suite parece estar completamente rota.

+0

He añadido una recompensa con la esperanza de que alguien explicar a mí lo Suites son buenos para o cómo puedo crear un lote de pruebas dentro de unos montajes sin correr todos ellos de línea de comandos. –

+0

Una pena que la recompensa no ayudó ... La única respuesta publicada no se acerca para responder a la pregunta. –

+0

Siempre uso categorías para este tipo de cosas. Parece ser más ampliamente compatible. –

Respuesta

3

Suites no son realmente necesarios para cualquier cosa mucho en todos estos días. Si solo quería usarlos para especificar qué pruebas se ejecutan y cuáles no, esto se logra mucho mejor con los atributos de Categoría. Esto es lo que terminaste haciendo y parece la mejor solución a tu problema.

Sin embargo, para referencia de otros y en el futuro, puede seguir usando Suites en Nunit. Debe ejecutarlos desde la consola y solo usar la opción/fixture. Por ejemplo, para ejecutar el banco de que ha especificado anteriormente, que había corrido (asumiendo que su clase fue compilado en un ensamblado AllTests.dll):

nunit-console /fixture:AllTests.Suite AllTests.dll 

Usted no verá ninguna evidencia de manera de ejecutar o suites en la GUI: esto se menciona en la documentación. Sin embargo, puede ejecutarlos desde la consola que está integrada en la GUI usando comandos como los anteriores.


Puedo utilizar suites en algunas de mis pruebas porque tengo algunos casos de uso impares que me requieren a veces tenga que pasar un argumento a mis métodos de ensayo. Lo hago creando un conjunto como el siguiente. Entonces hay algunos usos para ellos, simplemente no se necesita ninguno en su caso.

[Suite] 
    public static IEnumerable MySuite 
    { 
     get 
     { 
      var suite = new ArrayList{new TestClass1(arg1), TestClass2(arg2)}; 
      return suite; 
     } 
    } 
+0

Por cierto, si alguien conoce una mejor manera de pasar argumentos/controlar el comportamiento de una prueba en tiempo de ejecución que lo que he hecho, por favor coméntelo. Pasé un tiempo buscando documentos de Nunit y listas de correo y ¡esto fue lo mejor que se me ocurrió! – imoatama

3

¿Hay alguna razón por la que está devolviendo "IEnumerable" en lugar de "TestSuite"?

[Suite] 
public static TestSuite Suite 

actualización

La lectura de la letra pequeña en la parte inferior de la página en NUnit sitio, parece que los ensayos de tipo Suite no se mostrará en el corredor Gui, así que supongo que esa es la cuestión :)

Las suites actualmente no se muestran en el Gui ni las ejecuta automáticamente cualquiera de los corredores cuando se encuentran. El propósito histórico del mecanismo de Suite era proporcionar una forma de agregar pruebas en el nivel superior de cada ejecución. Por lo tanto, solo son compatibles cuando se usan con la opción/fixture en la consola o la línea de comandos de GUI.

Actualización 2

No estoy seguro de lo que está tratando de lograr con la función "Suite", pero si usted está tratando de encontrar una manera de configurar un conjunto de montajes de prueba para ser correr juntos, he usado "NUnit Test Projects" para hacer esto en el pasado (es solo un archivo de configuración xml que lista dlls de prueba). Esto permite que un conjunto fijo de referencias de ensamblado de prueba para ser configurado y luego se cargan en la interfaz gráfica de usuario o correr por el corredor de la consola:

http://www.nunit.org/index.php?p=multiAssembly&r=2.5.5

+0

Eso es lo que los documentos dicen que debo hacer: http://www.nunit.org/index.php?p=suite&r=2.4.7 Creo que tiene que ver con desacoplar la versión de NUnit de la prueba en sí. –

+0

a. No estoy usando la opción/fixture y, más importante aún, b. ¿cómo se supone que debo ejecutar la suite? Intenté GUI y consola ... no funciona. –

+0

Gracias, intentaré eso en su lugar. Pero para responder a su pregunta, sí, eso es lo que trato de lograr, y tenía la impresión de que para eso son las suites. Si no, ¿para qué son? –

Cuestiones relacionadas