Escribir pruebas unitarias para C/C++ en Visual Studio
Puede escribir y ejecutar pruebas unitarias de C++ en la ventana Explorador de pruebas. Funciona igual que con otros lenguajes. Para más información sobre cómo usar el Explorador de pruebas, vea Ejecutar pruebas unitarias con el Explorador de pruebas.
Nota
C++ no admite algunas características como Live Unit Testing, las pruebas de IU codificadas e IntelliTest.
Visual Studio incluye estos marcos de pruebas de C++ sin que sea preciso descargar nada más:
- Marco de pruebas unitarias de Microsoft para C++
- Google Test
- Boost.Test
- CTest
Puede usar los marcos instalados o escribir su propio adaptador de prueba para cualquier marco que quiera usar en Visual Studio. Un adaptador de prueba integra pruebas unitarias con la ventana Explorador de pruebas. Hay varios adaptadores que no son de Microsoft disponibles en Visual Studio Marketplace. Para obtener más información, consulte Instalación de marcos de pruebas unitarias.
Visual Studio 2017 y versiones posteriores (Professional y Enterprise)
Los proyectos de prueba unitaria de C++ admiten CodeLens.
Visual Studio 2017 y versiones posteriores (todas las ediciones)
Google Test se incluye como un componente predeterminado de la carga de trabajo de Desarrollo para el escritorio con C++ . Tiene una plantilla de proyecto que se puede agregar a una solución. Haga clic con el botón derecho en el nodo de la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto en el menú contextual para agregar la plantilla de proyecto. También tiene opciones que puede configurar mediante Tools>Options. Para obtener más información, vea Cómo: Utilizar Google Test en Visual Studio.
Boost.Test se incluye como un componente predeterminado de la carga de trabajo de Desarrollo para el escritorio con C++ . Se integra con el Explorador de pruebas, pero actualmente no tiene una plantilla de proyecto. Debe configurarlo manualmente. Para obtener más información, vea Cómo: Utilizar Boost.Test en Visual Studio.
La compatibilidad con CTest se incluye con el componente Herramientas de CMake en C++ , que forma parte de la carga de trabajo de Desarrollo para el escritorio con C++ . Para obtener más información, vea Cómo: Utilizar CTest en Visual Studio.
Versiones anteriores de Visual Studio
Puede descargar las extensiones de los adaptadores Google Test y Boost.Test en Visual Studio Marketplace. Las encontrará en Test Adapter para Boost.Test y Test Adapter para Google Test.
Sugerencia
También puede usar el comando de barra oblicua /tests
de Copilot para generar pruebas unitarias a partir del código. Por ejemplo, puede escribir /tests using Boost framework
para generar pruebas Boost.Test. Para obtener más información, consulte Uso de comando de barra oblicua de Copilot Chat.
Flujo de trabajo de prueba básico
En las siguientes secciones se explican los pasos básicos que sirven para empezar a realizar pruebas unitarias de C++. La configuración básica es similar en las plataformas de Microsoft y Google Test. Boost.Test, por su parte, requiere que se cree un proyecto de prueba manualmente.
Creación de un proyecto de prueba en Visual Studio 2022
Defina y ejecute las pruebas unitarias en uno o varios proyectos de prueba. Un proyecto de prueba crea una aplicación independiente que llama al código del archivo ejecutable e informa sobre su comportamiento. Cree los proyectos de prueba en la misma solución que el código que quiere probar.
Para agregar un nuevo proyecto de prueba a una solución existente:
- Haga clic con el botón derecho en el nodo de la solución en el Explorador de soluciones.
- En el menú contextual, elija Agregar>Nuevo proyecto.
- Establezca el valor de Lenguaje en C++ y escriba prueba en el cuadro de búsqueda. En la captura de pantalla siguiente se muestran los proyectos de prueba que están disponibles cuando se instalan las cargas de trabajo Desarrollo de escritorio con C++ y Desarrollo de UWP:
Creación de un proyecto de prueba en Visual Studio 2019
Defina y ejecute las pruebas en uno o varios proyectos de prueba. Cree los proyectos en la misma solución que el código que quiere probar.
Para agregar un nuevo proyecto de prueba a una solución existente:
- Haga clic con el botón derecho en el nodo de la solución en el Explorador de soluciones.
- En el menú contextual, elija Agregar>Nuevo proyecto.
- Establezca el valor de Lenguaje en C++ y escriba prueba en el cuadro de búsqueda. En la siguiente captura de pantalla se muestran los proyectos de prueba disponibles cuando se instalan la carga de trabajo Desarrollo de escritorio con C++ y la carga de trabajo Desarrollo UWP.
Crear referencias a otros proyectos en la solución
Para permitir el acceso a las funciones en el proyecto en pruebas, agregue una referencia al proyecto en el proyecto de prueba. En Explorador de soluciones, expanda el proyecto de prueba. Haga clic con el botón derecho en Referencias y luego seleccione Agregar>Referencia. En el cuadro de diálogo Añadir referencias, elija los proyectos que quiera probar.
Vinculación con archivos de objeto o biblioteca
Si el código de prueba no exporta las funciones que desea probar, agregue los archivos de salida .obj
o .lib
a las dependencias del proyecto de prueba. Para obtener más información, vea Para vincular las pruebas a los archivos de biblioteca u objeto. No incluya archivos objeto que tengan una función main
u otro punto de entrada estándar, como wmain
, WinMain
o DllMain
. Al agregar nuevos archivos de código fuente al proyecto, actualice las dependencias del proyecto de prueba para incluir los archivos objeto correspondientes.
Agregar directivas #include de archivos de encabezado
En el archivo .cpp
de prueba unitaria, agregue una directiva #include
para los archivos de encabezado que declaren los tipos y funciones que desea probar. Escriba #include "
y, de este modo, IntelliSense se activará para ayudarle a elegir. Repita esto mismo para los encabezados adicionales.
Sugerencia
Para evitar tener que escribir la ruta de acceso completa en cada instrucción include en el archivo de código fuente, agregue las carpetas necesarias en Proyecto>Propiedades>C/C++>General>Directorios de inclusión adicionales.
Escribir métodos de prueba
Nota
En esta sección se muestra la sintaxis del marco de pruebas unitarias de Microsoft para C y C++. Para obtener más información, consulte la referencia de API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.
Para obtener documentación sobre Google Test, vea Google Test Primer. Para Boost.Test, vea Boost Test library: The unit test framework (Biblioteca de Boost.Test: el marco de pruebas unitarias).
El archivo .cpp
del proyecto de prueba tiene definida una clase simulada y un método. Muestran un ejemplo de cómo escribir código de prueba. Las firmas usan las macros TEST_CLASS y TEST_METHOD, lo que hace que los métodos se puedan detectar desde la ventana Explorador de pruebas.
TEST_CLASS y TEST_METHOD forman parte del Marco de pruebas nativo de Microsoft. El Explorador de pruebas detecta métodos de prueba en otros marcos admitidos de forma similar.
Un método TEST_METHOD no devuelve ningún valor. Para obtener un resultado de prueba, use los métodos estáticos de la clase Assert
para probar resultados reales con los resultados esperados. En el siguiente ejemplo, se da por hecho que MyClass
tiene un constructor que toma una cadena std::string
. En este ejemplo se muestra cómo puede probar que el constructor inicializa la clase de la manera esperada:
TEST_METHOD(TestClassInit)
{
std::string name = "Bill";
MyClass mc(name);
Assert::AreEqual(name, mc.GetName());
}
En el ejemplo anterior, el resultado de la llamada Assert::AreEqual
determina si la prueba se supera o no. La clase Assert
contiene otros muchos métodos para comparar los resultados previstos con los reales.
Puede agregar rasgos para probar métodos para especificar los propietarios de la prueba, la prioridad y otro tipo de información. Así, podrá usar esos valores para ordenar y agrupar las pruebas en el Explorador de pruebas. Para obtener más información, consulte Ejecutar pruebas unitarias con el Explorador de pruebas.
Ejecutar las pruebas
En el menú de Prueba, elija Explorador de pruebas. En la ilustración siguiente se muestra un proyecto de prueba antes de ejecutar pruebas.
Nota
La integración de CTest con el Explorador de pruebas aún no está disponible. Realice pruebas de CTest desde el menú principal de CMake.
Si alguna de las pruebas no aparecen en la ventana, compile el proyecto de prueba. Para ello, haga clic con el botón derecho en el nodo correspondiente del Explorador de soluciones y elija Compilar o Recompilar.
En el Explorador de pruebas, elija Ejecutar todas o seleccione las pruebas concretas que quiera ejecutar. Haga clic con el botón derecho en una prueba para ver otras opciones, como la ejecución en modo de depuración con puntos de interrupción habilitados. Después de ejecutar todas las pruebas, la ventana muestra las pruebas que se han superado y las que no.
En las pruebas no superadas, el mensaje muestra detalles que ayudan a diagnosticar la causa. Haga clic con el botón derecho en la prueba con errores para ver un menú emergente. Elija Depurar para ir paso a paso por la función donde se ha producido el error.
Para más información sobre cómo usar el Explorador de pruebas, consulte Ejecutar pruebas unitarias con el Explorador de pruebas.
Para obtener más información relativa a las pruebas unitarias, consulte Conceptos básicos de prueba unitaria.
Uso de CodeLens
Visual Studio 2017 y versiones posteriores (ediciones Professional y Enterprise)
CodeLens permite ver rápidamente el estado de una prueba unitaria sin salir del editor de código.
Inicialice CodeLens para un proyecto de prueba unitaria de C++ de cualquiera de las siguientes maneras:
- Editar y compilar el proyecto de prueba o la solución.
- Recompilar el proyecto o la solución.
- Ejecutar pruebas desde la ventana Explorador de pruebas.
Después de inicializar CodeLens, puede ver los iconos de estado de prueba encima de cada prueba unitaria.
Elija el icono para ver más información o para ejecutar o depurar la prueba unitaria: