2010-05-13 10 views
18

Estoy intentando escribir un método simple que reciba un archivo y lo ejecute usando NUnit. El código que he logrado construir utilizando una fuente de NUnit no funciona:Cómo ejecutar las pruebas de NUnit desde el código de C#

if(openFileDialog1.ShowDialog() != DialogResult.OK) 
{ 
    return; 
} 

var builder = new TestSuiteBuilder(); 
var testPackage = new TestPackage(openFileDialog1.FileName); 
var directoryName = Path.GetDirectoryName(openFileDialog1.FileName); 
testPackage.BasePath = directoryName; 
var suite = builder.Build(testPackage); 

TestResult result = suite.Run(new NullListener(), TestFilter.Empty); 

El problema es que sigo recibiendo una excepción lanzada por builder.Build que indica que no se encontró el montaje.

¿Qué me estoy perdiendo? ¿Hay alguna otra forma de ejecutar la prueba desde el código (sin usar Process.Start)?

+0

Para ser honesto, no sé acerca de este modo de prueba. Adivinando a ciegas, ¿ha intentado ejecutar esta prueba a través de la GUI de NUnit, o ha verificado si tenía todas las dependencias referenciadas en su proyecto, o quizás si el ensamblaje está ubicado donde la excepción dice que no puede encontrarlo? Una clase de prueba con NUnit debe tener el atributo [TestFixture()] y los métodos de prueba el atributo [Test()], utilizando la importación NUnit.Framework. –

Respuesta

27

añadiendo la siguiente línea al principio, establece el marco NUnit y pueden ayudar:

CoreExtensions.Host.InitializeService(); 

Otra forma "más fácil" para ejecutar NUnit pone a prueba mediante programación sería:

TestPackage testPackage = new TestPackage(@"C:\YourProject.Tests.dll"); 
RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
remoteTestRunner.Load(testPackage); 
TestResult testResult = remoteTestRunner.Run(new NullListener()); 

Usted que hacer referencia a los siguientes conjuntos:

  • nunit.core.dll
  • nunit.core.interfaces.dll

Y, por supuesto, la nunit.framework.dll debe estar en la carpeta con el conjunto de prueba;)

+1

¿Está documentado todo esto? Me gustaría implementar algo como esto yo mismo, pero preferiría RTFM para ver qué opciones tengo abiertas – Andy

+2

No encontré documentación y tuve que hurgar en el [código fuente] (https://github.com/nunit/ nunitv2) para obtener más información. Pero, mientras estuve allí, encontré una sutil diferencia entre 'RemoteTestRunner' y' SimpleTestRunner', el primero llama 'CoreExtensions.Host.InitializeService' por usted, mientras que el simple no lo hace (lo que requiere que el usuario lo agregue a tu codigo). – SethO

Cuestiones relacionadas