Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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");
}
};