Share via


Pruebas unitarias de aplicaciones C++ existentes con el Explorador de pruebas

Se recomienda que, antes de cambiar una aplicación existente, se asegure de que tiene buena cobertura con pruebas unitarias.Esto le da la confianza de que los cambios no han introducido errores.Si la aplicación todavía no tiene pruebas unitarias, se pueden agregar mediante las técnicas mostradas en este tema.En este tema se describe cómo agregar pruebas unitarias para código Visual C++ existente en Microsoft Visual Studio 2012, comenzando por decidir cómo probar el código y cómo crear, escribir y, por último, ejecutar las pruebas.

La decisión sobre cómo probar el código

Abra el proyecto existente de C++ e inspecciónelo para decidir cómo desea agregar las pruebas unitarias.Quizá desee utilizar algunas herramientas de modelado, que ayudan a ver las dependencias del código, y ayudan a entender cómo interactúan los elementos.Para obtener más información, vea Visualizar y entender el código.

Se recomienda separar los cambios en pequeñas tareas.Antes de cada pequeño cambio, escriba pruebas unitarias para los aspectos del comportamiento que permanezcan invariables.Estas pruebas seguirán pasando después de realizar el cambio.Por ejemplo, si planea cambiar una función de ordenamiento de modo que ordene una lista de personas por apellido en lugar de por nombre, puede escribir una prueba unitaria que compruebe que todos los nombres de entrada aparecen en la salida.Después de realizar el cambio, se pueden agregar nuevas pruebas unitarias para el nuevo comportamiento.

Si resulta práctico, muchas o todas las pruebas unitarias deben utilizar sólo las funciones que se exportan.Pero si se cambia sólo una pequeña parte de toda la aplicación, se pueden utilizar funciones que no se exportan.Por ejemplo, quizás desee que las pruebas invoquen funciones internas, o pruebas que establezcan y obtengan los valores de variables internas.

Hay varias maneras de probar el código del producto, dependiendo de si expone las interfaces que desea probar.Elija una de las siguientes formas:

  • Las pruebas unitarias utilizarán sólo las funciones que se exportan del código en pruebas:
    Agregue un proyecto de prueba independiente.En el proyecto de prueba, agregue una referencia al proyecto en prueba.
Vaya al procedimiento Para crear un proyecto de prueba que hace referencia al código del proyecto.
  • El código sometido a prueba se compila como un archivo .exe:
    Agregue un proyecto de prueba independiente.Vincúlelo al archivo objeto de salida.

    Vaya al procedimiento Para crear un proyecto de prueba que hace referencia al archivo objeto de código.

  • Las pruebas unitarias deben utilizar funciones y datos privados y el código en pruebas puede compilarse como una biblioteca estática:
    Cambie el proyecto en pruebas para compilarlo como un archivo .lib.Agregue un proyecto de prueba independiente que haga referencia al proyecto en pruebas.

    Este enfoque tiene la ventaja de permitir que las pruebas utilicen los miembros privados, pero sigue manteniedo las pruebas en un proyecto independiente.Sin embargo, puede no ser adecuado para algunas aplicaciones donde se debe tener una biblioteca de vínculos dinámicos (.dll).

    Vaya al procedimiento Para cambiar el código en pruebas a una biblioteca estática.

  • Las pruebas unitarias deben utilizar funciones y datos privados y el código debe compilarse como una biblioteca de vínculos dinámicos (DLL):
    Agregue las pruebas unitarias en el mismo proyecto que el código de producto.

    Vaya al procedimiento Para agregar pruebas unitarias en el mismo proyecto.

Crear pruebas

Para cambiar el código en pruebas a una biblioteca estática

  • Si las pruebas deben utilizar miembros que no son exportados por un proyecto en pruebas y el proyecto en pruebas se compila como una biblioteca dinámica, considere convertirla en una biblioteca estática.

    1. En el Explorador de soluciones, en el acceso directo del proyecto en pruebas, elija Propiedades.Se abrirá la ventana de propiedades del proyecto.

    2. Elija Propiedades de configuración, General.

    3. Establezca Tipo de configuración a Biblioteca estática (.lib).

Continúe con el procedimiento Para crear un proyecto de prueba para las funciones exportadas.

Para referenciar funciones exportadas del proyecto de prueba

  • Si un proyecto en pruebas exporta funciones que desea probar, puede agregar una referencia al proyecto de código del proyecto de prueba.

    1. Para crear un proyecto de prueba C++.

      • En la barra de menú, elija Archivo, Nuevo, Proyecto, Visual C++,Prueba, Proyecto de prueba unitaria C++.
    2. En el Explorador de soluciones, en el acceso directo del proyecto de prueba, elija Referencias.Se abrirá la ventana de propiedades del proyecto.

    3. Seleccione Propiedades comunes, Marco de trabajo y referencias y elija el botón Agregar nueva referencia .

    4. Seleccione Proyectos y, a continuación, el proyecto que se va a probar.

      elija el botón de Agregar .

    5. En las propiedades del proyecto de prueba, agregue la ubicación del proyecto en pruebas a los directorios de inclusión.

      Elija Propiedades de configuración, Directorios de VC++, Incluir directorios.

      Elija Editar y agregue el directorio del encabezado del proyecto en pruebas.

Vaya a Escritura de las pruebas unitarias.

Para vincular las pruebas al objeto o archivos de biblioteca

  • Si el código en pruebas no exporta funciones que desea probar, puede agregar la salida .obj o el archivo .lib a las dependencias del proyecto de prueba.

    1. Para crear un proyecto de prueba C++.

      • En la barra de menú, elija Archivo, Nuevo, Proyecto, Visual C++,Prueba, Proyecto de prueba unitaria C++.
    2. En el Explorador de soluciones, en el acceso directo del proyecto de prueba, elija Propiedades.Se abrirá la ventana de propiedades del proyecto.

    3. Elija Propiedades de configuración, Vinculador, Entrada, Dependencias adicionales.

      Elija Editar y agregue los nombres de los archivos .obj o .lib.No utilice nombres de ruta de acceso completa.

    4. Elija Propiedades de configuración, Vinculador, General, Directorios de bibliotecas adicionales.

      Elija Editar y agregue la ruta del directorio de los archivos .obj o .lib.La ruta de acceso está normalmente dentro de la carpeta de compilación del proyecto en pruebas.

    5. Elija Propiedades de configuración, Directorios VC++, Incluir directorios.

      Elija Editar y agregue el directorio del encabezado del proyecto en pruebas.

Vaya a Escritura de las pruebas unitarias.

Para agregar pruebas unitarias en el mismo proyecto

  1. Modifique las propiedades del proyecto de código del producto para incluir los encabezados y los archivos de biblioteca que se requieren para pruebas unitarias.

    1. En el Explorador de soluciones, en el acceso directo del proyecto bajo pruebas, elija Propiedades.Se abrirá la ventana de propiedades del proyecto.

    2. Elija Propiedades de configuración, Directorios de VC++.

    3. Edite los directorios de inclusión y de biblioteca:

      Directorios de inclusión

      $(VCInstallDir)UnitTest\include;$(IncludePath)

      Directorios de biblioteca

      $(VCInstallDir)UnitTest\lib;$(LibraryPath)

  2. Agregue el archivo de prueba unitaria de C++.:

    • En el Explorador de soluciones, en el acceso directo del proyecto, elija Agregar, Nuevo elemento y elija Pruebas unitarias de C++.

Vaya a Escritura de las pruebas unitarias.

Escritura de las pruebas unitarias

  1. En cada archivo de código de prueba unitaria, agregue un fragmento #include para los encabezados de proyecto en pruebas.

  2. Agregue las clases y los métodos de prueba a los archivos de código de prueba unitaria.Por ejemplo:

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "MyProjectUnderTest.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    namespace MyTest
    {
      TEST_CLASS(MyTests)
      {
      public:
          TEST_METHOD(MyTestMethod)
          {
              Assert::AreEqual(MyProject::Multiply(2,3), 6);
          }
      };
    }
    

Para obtener más información, vea Pruebas unitarias de código nativo con el Explorador de pruebas.

Ejecutar las pruebas

  1. En el menú Ver , elija Otras ventanas, Explorador de pruebas.

  2. En el Explorador de pruebas, elija Ejecutar todas.

Para obtener más información, vea Inicio rápido: Desarrollo basado en pruebas con el Explorador de pruebas.