Compartir vía


Escritura de pruebas unitarias para C/C++ en Visual Studio

Puede escribir y ejecutar las pruebas unitarias de C++ mediante la ventana explorador de pruebas de. Funciona igual que para otros lenguajes. Para obtener más información sobre el uso de Explorador de pruebas, vea Ejecutar pruebas unitarias con el Explorador de pruebas.

Nota

Algunas características como Live Unit Testing, Pruebas automatizadas de IU e IntelliTest no se admiten para C++.

Visual Studio incluye estos marcos de prueba de C++ sin descargas adicionales necesarias:

  • Marco de pruebas unitarias de Microsoft para C++
  • Prueba de Google
  • 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 puede agregar a una solución. Haga clic con el botón derecho en el nodo de la solución en Explorador de soluciones y elija 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: Usar 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 Explorador de pruebas, pero actualmente no tiene una plantilla de proyecto. Debe configurarlo manualmente. Para obtener más información, vea Cómo: Usar 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: Usar CTest en Visual Studio.

  • Versiones anteriores de Visual Studio

    Puede descargar las extensiones adaptador de Google Test y Boost.Test Adapter en Visual Studio Marketplace. Las encontrará en Test Adapter para Boost.Test y Test Adapter para Google Test.

Sugerencia

También puedes usar el comando Copilot /tests [slash] 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, vea Usar comandos de barra diagonal en Copilot Chat.

Flujo de trabajo de prueba básico

En las secciones siguientes se muestran los pasos básicos para empezar a trabajar con las pruebas unitarias de C++. La configuración básica es similar para los marcos de Microsoft y Google Test. Boost.Test requiere que cree manualmente un proyecto de prueba.

Creación de un proyecto de prueba en Visual Studio 2022

Defina y ejecute pruebas unitarias dentro de uno o varios proyectos de prueba . Un proyecto de prueba crea una aplicación independiente que llama al código en el archivo ejecutable e informa sobre su comportamiento. Cree proyectos de prueba en la misma solución que el código que desea probar.

Para agregar un nuevo proyecto de prueba a una solución existente:

  1. Haga clic con el botón derecho en el nodo de la solución en el Explorador de soluciones.
  2. En el menú contextual, elija Agregar>Nuevo proyecto.
  3. 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 que están disponibles cuando se instalan las cargas de trabajo Desarrollo de escritorio con C++ y Desarrollo de UWP .

Captura de pantalla que muestra la ventana Agregar un nuevo proyecto con C++ seleccionado en Visual Studio 2022.

Creación de un proyecto de prueba en Visual Studio 2019

Defina y ejecute pruebas dentro de uno o varios proyectos de prueba. Cree los proyectos en la misma solución que el código que desea probar.

Para agregar un nuevo proyecto de prueba a una solución existente:

  1. Haga clic con el botón derecho en el nodo de la solución en el Explorador de soluciones.
  2. En el menú contextual, elija Agregar>Nuevo proyecto.
  3. 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:

Captura de pantalla que muestra la ventana Agregar un nuevo proyecto con C++ seleccionado en Visual Studio 2019.

Creación de referencias a otros proyectos de la solución

Para habilitar el acceso a las funciones del proyecto en prueba, 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.

Captura de pantalla que muestra el cuadro de diálogo Agregar referencia en Visual Studio 2022.

Captura de pantalla que muestra el cuadro de diálogo Agregar referencia en Visual Studio 2019.

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 de objeto que tengan una función de main u otro punto de entrada estándar, como wmain, WinMaino DllMain. Al agregar nuevos archivos de origen al proyecto, actualice las dependencias del proyecto de prueba para incluir los archivos de objeto correspondientes.

Adición de directivas de #include para 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, a continuación, IntelliSense se activa para ayudarle a elegir. Repita esto mismo para los encabezados adicionales.

Captura de pantalla que muestra el Explorador de soluciones con una instrucción #include con IntelliSense que resalta un archivo de encabezado en Visual Studio 2022.

Captura de pantalla que muestra el Explorador de soluciones con una instrucción #include con IntelliSense resaltando un archivo de encabezado en Visual Studio 2019.

Sugerencia

Para evitar tener que escribir la ruta de acceso completa en cada declaración include del archivo de origen, agregue las carpetas necesarias en Project>Properties>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/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. Si le interesa 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 una clase y un método esqueleto definidos para ti. Muestran un ejemplo de cómo escribir código de prueba. Las firmas usan las macros TEST_CLASS y TEST_METHOD, que hacen que los métodos se puedan detectar desde la ventana Explorador de Pruebas .

Captura de pantalla que muestra una clase y un método stub utilizando las macros TEST_CLASS y TEST_METHOD en Visual Studio 2022.

Captura de pantalla que muestra una clase 'stub' y un método 'stub' mediante las macros TEST_CLASS y TEST_METHOD en Visual Studio 2019.

TEST_CLASS y TEST_METHOD forman parte de microsoft Native Test Framework. 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 generar un resultado de prueba, use los métodos estáticos de la clase Assert para probar los resultados reales con los resultados esperados. En el ejemplo siguiente, supongamos que MyClass tiene un constructor que toma un 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 a Assert::AreEqual determina si la prueba supera o no. La clase Assert contiene muchos otros métodos para comparar los resultados esperados con los resultados reales.

Puede agregar rasgos para probar métodos para especificar los propietarios de la prueba, la prioridad y otro tipo de información. A continuación, puede usar estos valores para ordenar y agrupar pruebas en Explorador de pruebas. Para obtener más información, consulte Ejecutar pruebas unitarias con el Explorador de pruebas.

Ejecución de las pruebas

  1. En el menú de Prueba, elija Explorador de pruebas. En la ilustración siguiente se muestra un proyecto de prueba antes de ejecutar pruebas.

    Captura de pantalla que muestra el Explorador de pruebas antes de ejecutar pruebas en Visual Studio 2022.

    Captura de pantalla que muestra el Explorador de pruebas antes de ejecutar pruebas en Visual Studio 2019.

    Nota

    La integración de CTest con el Explorador de pruebas aún no está disponible. Ejecute pruebas de CTest desde el menú principal de CMake.

  2. Si falta alguna de las pruebas en la ventana, compile el proyecto de prueba haciendo clic con el botón derecho en su nodo en Explorador de soluciones y eligiendo Compilar o Recompilar.

  3. 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. Una vez ejecutadas todas las pruebas, la ventana muestra las pruebas que se han superado y las que han fallado.

    Captura de pantalla que muestra el Explorador de pruebas después de ejecutar pruebas en Visual Studio 2022.

    Captura de pantalla que muestra el Explorador de pruebas después de ejecutar pruebas en Visual Studio 2019.

En el caso de las pruebas con errores, el mensaje muestra detalles que ayudan a diagnosticar la causa. Haga clic con el botón derecho sobre la prueba fallida para abrir un menú emergente. Elija Depurar para ir paso a paso por la función donde se ha producido el error.

Para obtener más información sobre el uso de Explorador de pruebas, vea Ejecutar pruebas unitarias con el Explorador de pruebas.

Para obtener más información sobre las pruebas unitarias, consulte Conceptos básicos de pruebas unitarias.

Uso de CodeLens

visual Studio 2017 y versiones posteriores (ediciones Professional y Enterprise)

codeLens le 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 maneras siguientes:

  • Edite y compile el proyecto de prueba o la solución.
  • Recompile el proyecto o la solución.
  • Ejecute pruebas desde la ventana del Explorador de pruebas de.

Después de inicializar CodeLens, puede ver los iconos de estado de prueba encima de cada prueba unitaria.

Captura de pantalla que muestra los iconos de CodeLens de C++ en Visual Studio 2022.

Captura de pantalla que muestra los iconos de C++ CodeLens en Visual Studio 2019.

Elija el icono para obtener más información o para ejecutar o depurar la prueba unitaria:

Captura de pantalla que muestra el icono de CodeLens de C++ después de seleccionarlo para obtener más información en Visual Studio 2022.

Captura de pantalla que muestra el icono de CodeLens de C++ después de seleccionarlo para obtener más información en Visual Studio 2019.