2010-10-20 14 views
14

Estoy empezando a utilizar NUnit para escribir casos de prueba en C# con Visual Studio 2010 en .NET 4.0. Quiero usar NUnit para probar contra las funciones públicas de un .dll (un proyecto de biblioteca de clase C#). ¿Cómo configuro NUnit para que funcione con mi proyecto?¿Cómo configuro NUnit para ejecutar las pruebas unitarias de mi proyecto?

  1. ¿Debo agregar el código NUnit al mismo proyecto de biblioteca de clases para probar en contra, o debería añadir un proyecto separado en la misma solución para los casos de prueba de NUnit? ¿Cuál es la mejor práctica?

  2. Si necesito crear un proyecto separado para los casos de prueba de NUnit, ¿debo convertirlo en un proyecto de biblioteca de clases o un ejecutable? Si lo hice un proyecto de biblioteca de clase, ¿cómo lo ejecuto?

  3. Si necesito probar contra un ejecutable y no un proyecto de biblioteca de clase, ¿hay algún cambio en el proceso y/o proyectos?

+0

Si tiene ReSharper instalado, puede hacer clic con el botón derecho en su proyecto de prueba para ejecutar todas las pruebas de la unidad una vez que haya configurado todo. – reggaeguitar

Respuesta

15

Re 2

En general, mantener su [DLL caso de prueba] separado de su [DLL lógica de negocio]. Su dll lógica empresarial no debe incluir ningún conocimiento de NUnit, para separar las preocupaciones y simplificar la implementación/mantenimiento.

Su dll de caso de prueba debe incluir una referencia a NUnit y a su DLL de lógica de negocios.

No necesita compartir un espacio de nombre. Puede exponer los miembros internos de su dll de lógica de negocios al dll de su caso de prueba modificando el archivo AssemblyInfo.cs de dll de la lógica de negocios para exponer las partes internas del dll de caso de prueba. Esto le permite conservar la visibilidad deseada en la DLL de lógica de negocios.

Re 3

Sus casos de prueba deben ir en un (proyecto de biblioteca de clases es decir) DLL. Puede cargar esto directamente en la interfaz de usuario de NUnit, o usar el corredor de consola de NUnit en un entorno de integración para ejecutar sus pruebas automáticamente.

Cómo lo hago:

  • prueba abierta del proyecto de biblioteca de clases caso propiedades, ficha Depurar
  • conjunto de abrir con un programa externo: punto de esto a su nunit.exe
  • conjunto de línea de comandos argumentos para el nombre exacto de su caso de prueba dll: MyTests.dll
  • directorio de trabajo: simplemente haga clic en el botón de puntos suspensivos y se pre-seleccionar el directorio test DLL de salida para la generación actual config
  • establecer el proyecto de prueba a ser el proyecto de inicio defecto en la solución ; de esta forma, cada vez que pulse F5 (o el botón "Reproducir"), NUnit mostrará con las pruebas actualizadas precargadas, muy prácticas y rápidas.

Lo mejor de la suerte: pruebe también el tipo de proyecto de prueba avl. en Visual Studio, es muy similar a NUnit. Todavía prefiero NUnit, pero mientras aprendemos es bueno probar algunas opciones.

+0

Gracias, ¡pregunta respondida! – George2

+0

¡Gran respuesta, gracias! – BClaydon

8
  1. Las pruebas unitarias deben ir en un proyecto de prueba por separado bajo la misma solución.
  2. Sí, conviértalo en un proyecto de biblioteca de clase. Si desea ejecutar las pruebas en NUnit, this tutorial can show you how.

Con respecto a su comentario: Cuando configura NUnit.exe como el ejecutable de inicio predeterminado para la Biblioteca de clases de prueba (la que contiene las pruebas unitarias), le dice a NUnit qué DLL desea probar; después de la primera vez, recordará posteriormente en qué proyecto está ejecutando las pruebas.

También debe asegurarse de tener referencias en la biblioteca Unit Test que hacen referencia al otro proyecto.

Una vez más, el Tutorial que enumeré pasa por todo esto.

+0

Gracias! Si usa otro proyecto de prueba para probar en contra de la biblioteca de la clase, ¿cómo sabe el proyecto de prueba que prueba contra la biblioteca de la clase? ¿Debo hacer referencia desde el proyecto de prueba al proyecto de la biblioteca de clase para asegurarme de qué proyectos están contrastando el proyecto de prueba? – George2

+1

Esto y 3. No, nada cambia: su ejecutable puede probarse exactamente de la misma manera que su biblioteca. Y sí, su proyecto de prueba deberá hacer referencia al proyecto que está probando. – Lunivore

2

2: Debe colocar todas las pruebas NUnit en un proyecto separado en la misma solución. La construcción del proyecto crea las pruebas, y viceversa, de modo que mientras está TDDing este proyecto (usted está haciendo eso, ¿no?) Simplemente puede ejecutar las pruebas y creará todo lo necesario para hacerlo. 3: Biblioteca de clase. No necesita ser ejecutable por Windows si está usando NUnit; solo necesitas usar el corredor de prueba.

+0

¡Gracias! Si usa otro proyecto de prueba para probar en contra de la biblioteca de la clase, ¿cómo sabe el proyecto de prueba que prueba contra la biblioteca de la clase? ¿Debo hacer referencia desde el proyecto de prueba al proyecto de la biblioteca de clase para asegurarme de qué proyectos están contrastando el proyecto de prueba? – George2

+1

Debe hacer referencia al espacio de nombres de los objetos probados en el código con una instrucción using, pero siempre que el proyecto que se está probando y el proyecto con las pruebas estén en la misma solución, debería poder ver la otra clase sin tener que agregar una referencia real; el compilador creará referencias intra-solución para usted. – KeithS

2

Agregaría un proyecto de prueba separado para el código de prueba y referencia de NUnit y la biblioteca bajo prueba a partir de eso. Debe ser una biblioteca de clases, y se ejecuta con los corredores de prueba NUnit, p. Ej. nunit-console test_assembly.dll - vea el documentation.

+0

¡Gracias! Si usa otro proyecto de prueba para probar en contra de la biblioteca de la clase, ¿cómo sabe el proyecto de prueba que prueba contra la biblioteca de la clase? ¿Debo hacer referencia desde el proyecto de prueba al proyecto de la biblioteca de clase para asegurarme de qué proyectos están contrastando el proyecto de prueba? – George2

Cuestiones relacionadas