Pomocí Microsoft.VisualStudio.TestTools.CppUnitTestFramework
Toto téma obsahuje seznam veřejných členů Microsoft::VisualStudio::CppUnitTestFramework oboru názvů.
Záhlaví soubory jsou umístěny v VisualStudio2012 [x 86] InstallFolder**\VC\UnitTest\include** složky.
Lib soubory jsou umístěny v VisualStudio2012 [x 86] InstallFolder**\VC\UnitTest\lib** složky.
V tomto tématu
CppUnitTest.h
Create test classes and methods
Initialize and cleanup
Test methods
Test classes
Test modules
Create test attributes
Test method attributes
Test class attributes
Test module attributes
Pre-defined attributes
CppUnitTestAssert.h
General Asserts
Are Equal
Are Not Equal
Are Same
Are Not Same
Is Null
Is Not Null
Is True
Is False
Fail
Windows Runtime Asserts
Are Equal
Are Same
Are Not Equal
Are Not Same
Is Null
Is Not Null
Exception Asserts
- Expect Exception
CppUnitTestLogger.h
Logger
Write Message
CppUnitTest.h
Vytvořit test třídy a metody
TEST_CLASS(className)
Povinné pro každou třídu obsahující zkušební metody.Identifikuje className jako třída test.TEST_CLASSmusí být deklarován v rozsahu namescape.
TEST_METHOD(methodName)
{
// test method body
}
Definuje methodName jako zkušební metody.TEST_METHODmusí být deklarován v oboru metoda třídy.
Inicializace a vyčištění
Zkušební metody
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
Definuje methodName jako metoda, která se spustí před spuštěním každé zkušební metody.TEST_METHOD_INITIALIZEje možné definovat pouze jednou test třídy a musí být definována ve třídě test.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
Definuje methodName jako metoda, která se spouští po spuštění každé zkušební metody.TEST_METHOD_CLEANUPje možné definovat pouze jednou test třídy a musí být definovány v rozsahu třídy test.
Test třídy
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
Definuje methodName jako metoda, která se spouští po každé zkoušce třídy.TEST_CLASS_INITIALIZEje možné definovat pouze jednou test třídy a musí být definovány v rozsahu třídy test.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
Definuje methodName jako metoda, která se spouští po každé zkoušce třídy.TEST_CLASS_CLEANUPje možné definovat pouze jednou test třídy a musí být definovány v rozsahu třídy test.
Testovat moduly
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
Definuje metodu methodName , která se spouští při načtení modulu.TEST_MODULE_INITIALIZEje možné definovat pouze jednou v modulu test a musí být deklarovány v oboru názvů.
TEST_MODULE_CLEANUP(methodName)
Definuje metodu methodName , která se spouští při modul je uvolněn.TEST_MODULE_CLEANUPje možné definovat pouze jednou v modulu test a musí být deklarovány v oboru názvů.
Vytvořit testovací atributy
Atributy zkušební metody
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
Přidá atributy definované s jedním nebo více TEST_METHOD_ATTRIBUTE maker zkušební metody testClassName.
A TEST_METHOD_ATTRIBUTE makro definuje atribut s názvem Název_atributu a Hodnota_atributu.
Test atributy třídy
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
Přidá atributy definované s jedním nebo více TEST_CLASS_ATTRIBUTE makra do třídy test testClassName.
A TEST_CLASS_ATTRIBUTE makro definuje atribut s názvem Název_atributu a Hodnota_atributu.
Zkušební modul atributy
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
Přidá atributy definované s jedním nebo více TEST_MODULE_ATTRIBUTE makra v modulu test testModuleName.
A TEST_MODULE_ATTRIBUTE makro definuje atribut s názvem Název_atributu a Hodnota_atributu.
Předem definované atributy
Makra mohou nahradit tato makra předdefinovaných atribut TEST_METHOD_ATTRIBUTE, TEST_CLASS_ATTRIBUTE, nebo TEST_MODULE_ATTRIBUTE popsané výše.
TEST_OWNER(ownerAlias)
Definuje atribut s názvem Owner a hodnota atributu ownerAlias.
TEST_DESCRIPTION(description)
Definuje atribut s názvem Description a hodnota atributu Popis.
TEST_PRIORITY(priority)
Definuje atribut s názvem Priority a hodnota atributu priority.
TEST_WORKITEM(workitem)
Definuje atribut s názvem WorkItem a hodnota atributu pracovní položku.
TEST_IGNORE()
Definuje atribut s názvem Ignore a hodnota atributu true.
CppUnitTestAssert.h
Obecné nepodmíněných výrazů.
Jsou rovny
Ověřte, zda jsou dva objekty rovná
template<typename T>
static void AreEqual(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, zda jsou dva zdvojnásobí rovná
static void AreEqual(
double expected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, zda jsou rovná dvěma plováky.
static void AreEqual(
float expected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, zda jsou řetězce dvou char * rovná
static void AreEqual(
const char* expected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, zda jsou rovné dva řetězce w_char *
static void AreEqual(
const wchar_t* expected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Nejsou rovny
Ověřte, že dva zdvojnásobí nejsou rovny
static void AreNotEqual(
double notExpected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, že nejsou rovná dvěma plováky
static void AreNotEqual(
float notExpected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, že nejsou shodné řetězce dvou char *
static void AreNotEqual(
const char* notExpected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, že dva řetězce w_char * nejsou shodné
static void AreNotEqual(
const wchar_t* notExpected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ověřte, že dva odkazy nejsou shodné operátor na základě ==.
template<typename T>
static void AreNotEqual(
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Jsou stejné
Ověřte, že dva odkazy odkazují na stejnou instanci objektu (Identita).
template<typename T>
static void AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Nejsou stejné
Ověřte, že dva odkazy není odkaz na instanci objektu (Identita).
template<typename T>
static void AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Je Null
Ověřte, zda je ukazatel hodnotu NULL.
template<typename T>
static void IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Není Null
Ověřte, že není NULOVÝ ukazatel
template<typename T>
static void IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Je PRAVDA
Ověřte, zda je splněna podmínka
static void IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Je NEPRAVDA
Ověřte, zda je podmínka NEPRAVDA
static void IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Selhání
Vynutit výsledek testovacího případu selhal
static void Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Windows Runtime nepodmíněných výrazů.
Jsou rovny
Ověří, zda jsou dva ukazatele Windows Runtime rovná.
template<typename T>
static void AreEqual(
T^ expected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Ověří, že dvě Platform::String ^ řetězce jsou stejné.
template<typename T>
static void AreEqual(
T^ expected,
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Jsou stejné
Ověří, že dva odkazy Windows Runtime odkaz stejný objekt.
template<typename T>
static void AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Nejsou rovny
Ověří, že dva ukazatele za běhu systému Windows nejsou shodné.
template<typename T>
static void AreNotEqual(
T^ notExpected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Ověří, že dvě Platform::String ^ řetězce nejsou shodné.
static void AreNotEqual(
Platform::String^ notExpected,
Platform::String^ actual,
bool ignoreCase = false,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Nejsou stejné
Ověří, zda odkaz na stejný objekt se dvěma odkazy Runtime v systému Windows.
template<typename T>
static void AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Je Null
Ověří, zda ukazatel Windows Runtime nullptr.
template<typename T>
static void IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Není Null
Ověří ukazatel Windows Runtime není nullptr.
template<typename T>
static void IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Výjimka nepodmíněných výrazů.
Očekávat, že výjimka
Ověřte, že funkce vyvolá výjimku:
template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void ExpectException(
_FUNCTOR functor,
const wchar_t* message= NULL,
const __LineInfo* pLineInfo= NULL)
Ověřte, že funkce vyvolá výjimku:
template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE>
static void ExpectException(
_RETURNTYPE (*func)(),
const wchar_t* message= NULL,
const __LineInfo* pLineInfo = NULL)
CppUnitTestLogger.h
Protokolování
Protokolování třída obsahuje statické metody zápisu
class Logger
Napsat zprávu
static void
Logger::WriteMessage(const wchar_t* message)
static void
Logger::WriteMessage(const char* message)
Příklad
Tento kód je příkladem
////////////////////////////////////////////////////////////
/* USAGE EXAMPLE
// The following is an example of VSCppUnit usage.
// It includes examples of attribute metadata, fixtures,
// unit tests with assertions, and custom logging.
#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");
}
};
Viz také
Koncepty
Ověření kódu pomocí zkoušky jednotky