2008-11-03 11 views
7

Tengo un proyecto grande para el que estoy intentando usar TDD. Estoy usando Tut como mi marco de prueba, que tiene sus defectos pero es suficiente para lo que necesito.Creación y ejecución de pruebas de unidades de C++ en Visual Studio (TDD)

tengo que explotar vetas de prueba de tiempo de enlace, cada prueba debe estar en su propio ejecutable. El proyecto de este ejecutable se inicia luego como un paso posterior a la compilación.

Lamentablemente, esto significa que mi Visual Studio Sln se está llenando de pruebas, que no es escalable y también oculta los proyectos realmente importantes.

¿Alguien sabe de una mejor manera de ejecutar estas pruebas? ¿Es posible ocultar proyectos de una compilación y aún así tenerlos compilados?

+0

Me actualicé posteriormente, la adición de carpetas de solución resuelve este problema. Puedo poner mis pruebas en una carpeta. –

Respuesta

4

"¿Es posible ocultar proyectos de una compilación y aún así tenerlos compilados?"

Puede hacer una solución por separado para casos de prueba. Luego puede configurar el paso posterior a la compilación de sus proyectos principales. Esta construcción posterior debería construir pruebas-proyectos a través de una solución por separado y ejecutarlos. Los proyectos de prueba de construcción deben realizarse a través de la línea de comandos (ver, por ejemplo, here para más detalles).

Si es necesario enlazar las pruebas unitarias con un poco de lib-s de los proyectos principales, puede utilizar

#pragma comment(lib, "libname") 

Ver this MSDN page para más detalles.

+0

Me gusta la idea de crear un sln por separado, con suerte puedo hacer que compartan archivos obj. –

+0

No intenté compartir obj-s ... Buena suerte :) – sergtk

0

Puede intentar agrupar sus pruebas en carpetas (¿se les llama filtros?) Dentro de su solución en el Explorador de soluciones. Esto separaría las pruebas de sus otros proyectos.

Pero, de lo contrario, ¿podría evitar usar las costuras de prueba de tiempo de enlace (Sí, lo sé, es demasiado tarde para sugerir esto) y usar polimorfismo para proporcionar su variación de tiempo de ejecución y tener menos proyectos de prueba?

0

No sé si todavía está buscando una solución. Pero he aquí una idea:

Puede guardar todas sus pruebas en una biblioteca y escribir una aplicación que se genera y ejecuta cada prueba. De esta forma, terminas con un ejecutable (y, por lo tanto, un proyecto) para un conjunto y cada prueba será como un ejecutable por separado.

Este es de hecho el mecanismo utilizado en CUnitWin32. Incluso puede ser capaz de ajustar sus pruebas en ese marco.

Cuestiones relacionadas