Share via


Usar el marco de pruebas unitarias de Microsoft para C++ en Visual Studio

El marco de pruebas unitarias de Microsoft para C++ se incluye de forma predeterminada en la carga de trabajo de desarrollo para el escritorio con C++ .

Para escribir pruebas unitarias en un proyecto independiente

Normalmente, el código de prueba hay que ejecutarlo en su propio proyecto, en la misma solución que el código que quiere probar. Para instalar y configurar un nuevo proyecto de prueba, vea Escribir pruebas unitarias para C/C++.

Para escribir pruebas unitarias en el mismo proyecto

En algunos casos (por ejemplo, al probar funciones no exportadas en una DLL), puede que tenga que crear las pruebas en el mismo proyecto que el programa que quiere probar. Para escribir pruebas unitarias en el mismo proyecto:

  1. Modifique las propiedades del proyecto para incluir los encabezados y los archivos de biblioteca que sean necesarios para las pruebas unitarias.

    1. En el Explorador de soluciones, en el menú contextual del proyecto en pruebas, seleccione Propiedades. Se abrirá la ventana de propiedades del proyecto.

    2. En el cuadro de diálogo Páginas de propiedades, seleccione Propiedades de configuración>Directorios de VC++ .

    3. Seleccione la flecha abajo en las siguientes filas y elija <Editar>. Agregue estas rutas de acceso:

      Directorio Propiedad.
      Directorios de archivos de inclusión $(VCInstallDir)Auxiliary\VS\UnitTest\include
      Directorios de archivos de bibliotecas $(VCInstallDir)Auxiliary\VS\UnitTest\lib
  2. Agregue el archivo de prueba unitaria de C++:

    1. Haga clic con el botón derecho en el nodo del proyecto en el Explorador de soluciones y seleccione Agregar>Nuevo elemento.

    2. En el cuadro de diálogo Agregar nuevo elemento, seleccione Archivo C++ (.cpp), escriba un nombre adecuado para este y elija Agregar.

Para vincular las pruebas a los archivos biblioteca u objeto

Si el código en pruebas no exporta las funciones que quiere probar, puede agregar el archivo de salida .obj o .lib a las dependencias del proyecto de prueba. Modifique las propiedades del proyecto de prueba para incluir los encabezados y los archivos objeto o de biblioteca que sean necesarios para las pruebas unitarias.

  1. En el Explorador de soluciones, en el menú contextual del proyecto de prueba, seleccione Propiedades. Se abrirá la ventana de propiedades del proyecto.

  2. Seleccione la página Propiedades de configuración>Enlazador>Entrada y, a continuación, seleccione Dependencias adicionales.

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

  3. Seleccione la página Propiedades de configuración>Enlazador>General y, a continuación, seleccione Directorios de bibliotecas adicionales.

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

  4. Seleccione la página Propiedades de configuración>Directorios de VC++ y, a continuación, seleccione Directorios de inclusión.

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

Escribir las pruebas

Cualquier archivo .cpp con clases de prueba debe incluir "CppUnitTest.h" y tener una instrucción Using para using namespace Microsoft::VisualStudio::CppUnitTestFramework. El proyecto de prueba ya está configurado. También incluye una definición de espacio de nombres y una TEST_CLASS con un TEST_METHOD para que pueda empezar. Puede cambiar el nombre del espacio de nombres y los nombres entre paréntesis de las macros de la clase y el método.

La plataforma de prueba define macros especiales para inicializar los módulos, las clases y los métodos de prueba, así como para limpiar recursos después de que se completan las pruebas. Estas macros generan código para ejecutarse antes de que se tenga acceso por primera vez a una clase o a un método y después de que se haya ejecutado la última prueba. Para más información, vea Inicialización y limpieza.

Use los métodos estáticos de la clase Assert para definir las condiciones de la prueba. Use la clase Logger para escribir mensajes en la Ventana de salida. Agregar atributos a los métodos de prueba

Ejecutar las pruebas

  1. En el menú Prueba, elija Windows>Explorador de pruebas.

  2. Si no todas las pruebas son visibles 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.

  4. En la Ventana de salida, elija Pruebas en la lista desplegable para ver los mensajes escritos por la clase Logger:

    C++ Output Window showing test messages

Definir rasgos para permitir la agrupación

Se pueden definir rasgos en los métodos de prueba para poder clasificar y agrupar las pruebas en el Explorador de pruebas. Para definir un rasgo, use la macro TEST_METHOD_ATTRIBUTE . Por ejemplo definir un rasgo denominado TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

Para usar el rasgo definido en las pruebas unitarias:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

Macros de atributo de rasgo de C++

Encontrará los siguientes rasgos predefinidos en CppUnitTest.h. Para obtener más información, vea la referencia de API del marco de pruebas unitarias de Microsoft para C++.

Macro Descripción
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Para definir un rasgo, use la macro TEST_METHOD_ATTRIBUTE.
TEST_OWNER(ownerAlias) Para especificar un propietario del método de prueba, use el rasgo de propietario predefinido.
TEST_PRIORITY(priority) Para asignar prioridades relativas a los métodos de prueba, use el rasgo de prioridad predefinido.