2011-11-03 27 views
10

Tengo un proyecto NUnit que crea una aplicación de consola para ejecutar pruebas. El punto de entrada es el siguiente:especifique la prueba NUnit para ejecutar

class Program 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 
     string[] my_args = { Assembly.GetExecutingAssembly().Location }; 

     int returnCode = NUnit.ConsoleRunner.Runner.Main(my_args); 

     if (returnCode != 0) 
      Console.Beep(); 

    } 
} 

Qué puedo pasar como argumento si quería correr esta prueba SOLAMENTE:

[TestFixture] 
public class EmailNotificationTest 
{ 
    [Test] 
    public void MailerDefaultTest() 
    { 
     Assert.IsTrue(false); 
    } 
} 

Es evidente que esto es compatible, y con la misma claridad que tengo no tengo idea de cómo hacerlo.

ACTUALIZACIÓN

Parece que con v3 +, esto es posible con la opción --test, por the documentation.

+0

No he usado ConsoleRunner, pero probablemente respeta los atributos '[Explicit]' y '[Category]'. – jrummell

+0

Para aquellos que buscan 'nunit3-console.exe', ver http://stackoverflow.com/questions/37297838/run-individual-test-from-nunit3-console-exe – KCD

Respuesta

10

Puede marcar su prueba con [Category("RunOnlyThis")] atributo, y luego decirle NUnit para ejecutar pruebas sólo coinciden con la categoría específica:

/include:RunOnlyThis 

es el atributo es necesario agregar a la consola argumentos corredor. Más here.

+0

Esto no es necesario desde la GUI ... espero poder ser específico sin hacer cambios de código para poder localizar una prueba específica como lo hago desde la GUI. ¿No es esto posible? –

+0

@JeremyHolovacs: NUnit doc permanece en silencio al respecto, supongo que Console Runner no lo permite en ese momento. Teniendo esto en cuenta, iría con adjuntar depurador, es bastante fácil y puedes encontrar cómo hacerlo en SO ([por ejemplo, aquí]) (http://stackoverflow.com/questions/759854/how-do-i -run-nunit-in-debug-mode-from-visual-studio)). –

+1

Terminé usando un '/ fixture: EmailNotificationTest' y puse mi prueba en su propia clase. Adjuntar el depurador cada vez que modifico algo es molesto ... pero la respuesta parece ser "no puedes hacerlo". Cojo. –

2

Una aplicación viene con NUnit, y la aplicación puede iniciar la prueba que desee. Es realmente útil, y no es necesario escribir código para ejecutar la prueba.

+0

Realmente quiero adjuntarlo automáticamente al depurador, que la aplicación no me permite hacer (o al menos, no fácilmente). Tengo algunas pruebas que están fallando y estoy tratando de ver por qué. –

4

Como dijo @Toto, use el NUnit Gui, puede seleccionar y elegir.

enter image description here

+0

Sí, así es como sé que es posible, pero eso no es lo que estoy tratando de hacer. En este caso, mis últimos cambios de código rompieron algunas pruebas de unidad, y estoy tratando de encontrar la causa raíz. Si ejecuto el proyecto NUnit como una aplicación de consola desde Visual Studio, puedo poner puntos de interrupción y rastrear el código, que es lo que estoy tratando de hacer. –

+1

Puede adjuntar Visual Studio a nunit, se alcanzarán sus rupturas. Lo hago a menudo También hay http://www.testdriven.net/ que proporciona funcionalidad de clic derecho en Visual Studio para iniciar la prueba unitaria con Visual Studio Debugger (realmente útil). – Toto

9

La última versión (NUnit 3) permite depurar pruebas y también especificar pruebas para su ejecución.

depuración

La opción --debug lanza depurador para las pruebas de depuración, por ejemplo:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug 

pruebas Filtrar

Ahora tiene un número de diferentes formas de seleccionar la prueba (s) para correr. La primera opción es --test=NAMES. La combinación de esta opción y --debug fácilmente puede depurar una sola prueba, por ejemplo:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug --test="EmailNotificationTest.MailerDeSecondTest" 

No olvidar el espacio de nombres si la clase tiene.

Usando --testlist=PATH opción que puede ejecutar todas las pruebas especificadas en un archivo, por ejemplo:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug --testlist="testnames.txt" 

También existe la opción de --where=EXPRESSION indicando qué se llevará a cabo pruebas. Esta opción tiene la intención de ampliar o reemplazar las opciones anteriores --test, --include y --exclude. Consulte el official documentation si desea obtener más información acerca de esta opción.

+0

El doc oficial lamentablemente no ha especificado qué es 'NAMES' en realidad. Parece que es el nombre de clase completo? – gideon

+0

para la lista de prueba, ¿cómo se especifica una lista de prueba que se encuentra en la DLL? sigo sin poder localizar el error de archivo. ¿Dónde almacenamos estos archivos de prueba? – Tree55Topz

3

Puede usar /run interruptor de consola NUnit para especificar la prueba que desea ejecutar.

De esta manera:

/run:namespace.classname.functionName 

P. ej

nunit-console.exe "C:\UnitTests.dll" /run:UnitTests.EmailNotificationTest.MailerDefaultTest 
Cuestiones relacionadas