Referencia de API Microsoft.VisualStudio.TestTools.CppUnitTestFramework
Este tema se enumeran los miembros públicos de espacio de nombres Microsoft::VisualStudio::CppUnitTestFramework
. Use estas API para escribir pruebas unitarias de C++ basadas en el marco de pruebas unitarias de tipo nativo de Microsoft. Al final del tema encontrará un ejemplo de uso.
Los archivos lib y de encabezado se encuentran en la <carpeta de instalación de Visual Studio>\VC\Auxiliary\VS\UnitTest.
Las rutas de acceso de encabezado y biblioteca se configuran automáticamente en un proyecto de prueba nativo.
En este tema
CppUnitTest.h
Crear clases y métodos de prueba
TEST_CLASS(className)
Se requiere para cada clase que contiene métodos de prueba. Identifica className como una clase de prueba. TEST_CLASS
debe declararse en el ámbito de espacio de nombres.
TEST_METHOD(methodName)
{
// test method body
}
Define methodName como un método de prueba. TEST_METHOD
debe declararse en el ámbito de la clase del método.
Inicialización y limpieza
Métodos de prueba
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
Define methodName como un método que se ejecuta antes de ejecutar cada método de prueba. TEST_METHOD_INITIALIZE
solo se puede definir una vez en una clase de prueba y se debe definir en el ámbito de la clase de prueba.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
Define methodName como un método que se ejecuta después de ejecutar cada método de prueba. TEST_METHOD_CLEANUP
solo se puede definir una vez en una clase de prueba y se debe definir en el ámbito de la clase de prueba.
Clases de prueba
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
Define methodName como un método que se ejecuta antes de que se cree cada clase de prueba. TEST_CLASS_INITIALIZE
solo se puede definir una vez en una clase de prueba y se debe definir en el ámbito de la clase de prueba.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
Define methodName como un método que se ejecuta después de que se cree cada clase de prueba. TEST_CLASS_CLEANUP
solo se puede definir una vez en una clase de prueba y se debe definir en el ámbito de la clase de prueba.
Módulos de prueba
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
Define el método methodName que se ejecuta cuando se carga un módulo. TEST_MODULE_INITIALIZE
solo se puede definir una vez en un módulo de prueba y se debe declarar en el ámbito de espacio de nombres.
TEST_MODULE_CLEANUP(methodName)
Define el método methodName que se ejecuta cuando se descarga un módulo. TEST_MODULE_CLEANUP
solo se puede definir una vez en un módulo de prueba y se debe declarar en el ámbito de espacio de nombres.
Crear atributos de prueba
Atributos de método de prueba
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
Agrega los atributos definidos con una o varias macros de TEST_METHOD_ATTRIBUTE
al método de prueba testMethodName.
Una macro de TEST_METHOD_ATTRIBUTE
define un atributo con el nombre attributeName y el valor attributeValue.
Atributos de clase de prueba
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
Agrega los atributos definidos con una o varias macros de TEST_CLASS_ATTRIBUTE
a la clase de prueba testClassName.
Una macro de TEST_CLASS_ATTRIBUTE
define un atributo con el nombre attributeName y el valor attributeValue.
Atributos de módulo de prueba
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
Agrega los atributos definidos con una o varias macros de TEST_MODULE_ATTRIBUTE
al módulo de prueba testModuleName.
Una macro de TEST_MODULE_ATTRIBUTE
define un atributo con el nombre attributeName y el valor attributeValue.
Atributos predefinidos
Estas macros de atributo predefinidas se proporcionan para mayor comodidad en los casos comunes. Se pueden sustituir por la macro TEST_METHOD_ATTRIBUTE
descrita anteriormente.
TEST_OWNER(ownerAlias)
Define un TEST_METHOD_ATTRIBUTE
con el nombre Owner
y el valor del atributo de ownerAlias.
TEST_DESCRIPTION(description)
Define un TEST_METHOD_ATTRIBUTE
con el nombre Description
y el valor del atributo de description.
TEST_PRIORITY(priority)
Define un TEST_METHOD_ATTRIBUTE
con el nombre Priority
y el valor del atributo de priority.
TEST_WORKITEM(workitem)
Define un TEST_METHOD_ATTRIBUTE
con el nombre WorkItem
y el valor del atributo de workItem.
TEST_IGNORE()
Define un TEST_METHOD_ATTRIBUTE
con el nombre Ignore
y el valor del atributo de true
.
CppUnitTestAssert.h
Aserciones generales
Son iguales
Comprobar que dos objetos son iguales
template<typename T>
static void Assert::AreEqual(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos duplicados son iguales
static void Assert::AreEqual(
double expected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos floats son iguales
static void Assert::AreEqual(
float expected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos cadenas char* son iguales
static void Assert::AreEqual(
const char* expected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos cadenas w_char* son iguales
static void Assert::AreEqual(
const wchar_t* expected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
No son iguales
Comprobar que dos duplicados no son iguales
static void Assert::AreNotEqual(
double notExpected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos floats no son iguales
static void Assert::AreNotEqual(
float notExpected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos cadenas char* no son iguales
static void Assert::AreNotEqual(
const char* notExpected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Comprobar que dos cadenas w_char* no son iguales
static void Assert::AreNotEqual(
const wchar_t* notExpected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Compruebe si dos referencias son iguales según el operador ==.
template<typename T>
static void Assert::AreNotEqual(
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Son los mismos
Compruebe que las dos referencias hacen referencia a la misma instancia de objeto (identidad).
template<typename T>
static void Assert::AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
No son los mismos
Compruebe que las dos referencias no hacen referencia a la misma instancia de objeto (identidad).
template<typename T>
static void Assert::AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Es Null
Compruebe que el puntero es NULL.
template<typename T>
static void Assert::IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
No es Null
Compruebe que un puntero no es NULL
template<typename T>
static void Assert::IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Es True
Compruebe que una condición es true
static void Assert::IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Es False
Compruebe que una condición es false
static void Assert::IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Suspenso
Fuerce el resultado del caso de prueba a producir un error
static void Assert::Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Aserciones en Windows Runtime
Son iguales
Comprueba si dos punteros de Windows Runtime son iguales.
template<typename T>
static void Assert::AreEqual(
T^ expected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Comprueba que dos cadenas Platform:: String ^ son iguales.
template<typename T>
static void Assert::AreEqual(
T^ expected,
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Son los mismos
Comprueba que dos referencias de Windows Runtime hacen referencia al mismo objeto.
template<typename T>
static void Assert::AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
No son iguales
Comprueba si dos punteros de Windows Runtime no son iguales.
template<typename T>
static void Assert::AreNotEqual(
T^ notExpected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Comprueba que dos cadenas Platform:: String ^ no son iguales.
static void Assert::AreNotEqual(
Platform::String^ notExpected,
Platform::String^ actual,
bool ignoreCase = false,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
No son los mismos
Comprueba que dos referencias de Windows Runtime no hacen referencia al mismo objeto.
template<typename T>
static void Assert::AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Es Null
Comprueba que un puntero de Windows Runtime es nullptr.
template<typename T>
static void Assert::IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
No es Null
Comprueba que un puntero de Windows Runtime no es nullptr.
template<typename T>
static void Assert::IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Aserciones en excepción
Excepción esperada
Compruebe que una función produce una excepción:
template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void Assert::ExpectException(
_FUNCTOR functor,
const wchar_t* message= NULL,
const __LineInfo* pLineInfo= NULL)
Compruebe que una función produce una excepción:
template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE>
static void Assert::ExpectException(
_RETURNTYPE (*func)(),
const wchar_t* message= NULL,
const __LineInfo* pLineInfo = NULL)
CppUnitTestLogger.h
Registrador
La clase Logger contiene métodos estáticos para escribir en la Ventana de salida.
Escribir mensaje
Escribir una cadena en la Ventana de salida
static void Logger::WriteMessage(const wchar_t* message)
static void Logger::WriteMessage(const char* message)
Ejemplo
Este código es un ejemplo de uso de VSCppUnit. Incluye ejemplos de metadatos de atributo, accesorios, pruebas unitarias con aserciones y registro personalizado.
// USAGE EXAMPLE
#include <CppUnitTest.h>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
BEGIN_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_ATTRIBUTE(L"Date", L"2010/6/12")
END_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_INITIALIZE(ModuleInitialize)
{
Logger::WriteMessage("In Module Initialize");
}
TEST_MODULE_CLEANUP(ModuleCleanup)
{
Logger::WriteMessage("In Module Cleanup");
}
TEST_CLASS(Class1)
{
public:
Class1()
{
Logger::WriteMessage("In Class1");
}
~Class1()
{
Logger::WriteMessage("In ~Class1");
}
TEST_CLASS_INITIALIZE(ClassInitialize)
{
Logger::WriteMessage("In Class Initialize");
}
TEST_CLASS_CLEANUP(ClassCleanup)
{
Logger::WriteMessage("In Class Cleanup");
}
BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
TEST_OWNER(L"OwnerName")
TEST_PRIORITY(1)
END_TEST_METHOD_ATTRIBUTE()
TEST_METHOD(Method1)
{
Logger::WriteMessage("In Method1");
Assert::AreEqual(0, 0);
}
TEST_METHOD(Method2)
{
Assert::Fail(L"Fail");
}
};