Compartir vía


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:

  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 2022.

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:

  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 disponibles cuando se instalan la carga de trabajo Desarrollo de escritorio con C++ y la carga de trabajo Desarrollo UWP.

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

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.

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 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.

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 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.

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

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

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

  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. Realice pruebas de CTest desde el menú principal de CMake.

  2. 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.

  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. Después de ejecutar todas las pruebas, la ventana muestra las pruebas que se han superado y las que no.

    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 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.

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 ver 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.