visual unitarias unit tutorial test studio pruebas c# unit-testing testing nunit ninject

unitarias - unit test c# visual studio 2017



Ejecute pruebas unitarias en diferentes dominios de aplicaciĆ³n con NUnit (3)

Parece que tengo un problema, la aplicación que estamos utilizando utiliza un kernel de Ninject y contiene una configuración particular que se reúne con los contenidos de la llamada de WCF (nombre de usuario, token ...).

En función de esa configuración particular, al usuario se le asignan derechos en la aplicación, esto está protegido a través de una instancia particular en el kernel de Ninject.

No podemos simplemente recomponer el kernel de Ninject, lo que nos gustaría hacer es ejecutar un par de pruebas de Nunit, pero ejecutar cada una de ellas en un dominio de aplicación separado (recreando el kernel cada vez con diferentes configuraciones).

Solo he encontrado formas de ejecutar proyectos de prueba completos en diferentes dominios de aplicación pero no de prueba por prueba.

¿Hay una manera de resolver esto?

Desafortunadamente, la configuración de Ninject no está de nuestro lado, tenemos que ''vivir'' de esta manera.


No creo que haya una manera de resolverlo sin volver a escribir partes del código NUnit. Ha pasado un tiempo desde que estoy dentro del código de NUnit, pero estoy bastante seguro de que la parte de carga del dominio principal de la aplicación no ha cambiado.

NUnit generalmente utiliza dos dominios de aplicación. El predeterminado que se crea cuando se ejecuta NUnit y uno diferente para cargar los conjuntos de prueba y los ensamblados a los que hacen referencia. La razón principal para hacer esto es permitir la descarga de los conjuntos de prueba. No puede descargar un dll, pero puede descargar un dominio de aplicación.

Es posible que pueda ejecutar NUnit una vez por prueba y pasar la prueba en la línea de comandos, pero eso es feo y no estoy seguro de que sea útil.

También podría ser posible aprovechar los Atributos de Acción en NUnit 2.6, pero vas a hacer mucho trabajo allí para hacerlo.

También es posible que pueda crear un nuevo dominio de aplicación en su método de configuración e invocarlo en cada prueba. Torpe pero posible.

Lo siento, no tengo una respuesta más completa.


No estoy del todo seguro acerca de tu pregunta. Sin embargo, parece que necesita algún tipo de implementación personalizada. ¿Consideró atributos de prueba personalizados? Entonces, ¿se puede configurar cada atributo para que se ejecute en un dominio de aplicación diferente? Estoy dando vueltas a algunas ideas, pero puede haber mejores formas de hacerlo.


Necesitaba hacer exactamente lo mismo, así que creé una biblioteca que básicamente toma la prueba actual y la vuelve a ejecutar en un nuevo Dominio de aplicación. Es un paquete Nuget llamado NUnit.ApplicationDomain y es de código abierto .

Código de ejemplo:

[Test, RunInApplicationDomain] public void Method() { Console.WriteLine("I''m in a different AppDomain") }