Sdílet prostřednictvím


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

Hh694604.collapse_all(cs-cz,VS.110).gifVytvoř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.

Hh694604.collapse_all(cs-cz,VS.110).gifInicializace a vyčištění

Hh694604.collapse_all(cs-cz,VS.110).gifZkuš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.

Hh694604.collapse_all(cs-cz,VS.110).gifTest 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.

Hh694604.collapse_all(cs-cz,VS.110).gifTestovat 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ů.

Hh694604.collapse_all(cs-cz,VS.110).gifVytvořit testovací atributy

Hh694604.collapse_all(cs-cz,VS.110).gifAtributy 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.

Hh694604.collapse_all(cs-cz,VS.110).gifTest 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.

Hh694604.collapse_all(cs-cz,VS.110).gifZkuš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.

Hh694604.collapse_all(cs-cz,VS.110).gifPř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

Hh694604.collapse_all(cs-cz,VS.110).gifObecné nepodmíněných výrazů.

Hh694604.collapse_all(cs-cz,VS.110).gifJsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifNejsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifJsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifNejsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifJe 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)

Hh694604.collapse_all(cs-cz,VS.110).gifNení 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)

Hh694604.collapse_all(cs-cz,VS.110).gifJe PRAVDA

Ověřte, zda je splněna podmínka

static void IsTrue(
    bool condition, 
    const wchar_t* message = NULL, 
    const __LineInfo* pLineInfo = NULL)

Hh694604.collapse_all(cs-cz,VS.110).gifJe NEPRAVDA

Ověřte, zda je podmínka NEPRAVDA

static void IsFalse(
    bool condition, 
    const wchar_t* message = NULL, 
    const __LineInfo* pLineInfo = NULL)

Hh694604.collapse_all(cs-cz,VS.110).gifSelhání

Vynutit výsledek testovacího případu selhal

static void Fail(
    const wchar_t* message = NULL, 
    const __LineInfo* pLineInfo = NULL)

Hh694604.collapse_all(cs-cz,VS.110).gifWindows Runtime nepodmíněných výrazů.

Hh694604.collapse_all(cs-cz,VS.110).gifJsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifJsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifNejsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifNejsou 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)

Hh694604.collapse_all(cs-cz,VS.110).gifJe Null

Ověří, zda ukazatel Windows Runtime nullptr.

template<typename T> 
static void IsNull(
    T^ actual,
    Platform::String^ message = nullptr, 
    const __LineInfo* pLineInfo= nullptr)

Hh694604.collapse_all(cs-cz,VS.110).gifNení Null

Ověří ukazatel Windows Runtime není nullptr.

template<typename T> 
static void IsNotNull(
    T^ actual, 
    Platform::String^ message= nullptr, 
    const __LineInfo* pLineInfo= nullptr)

Hh694604.collapse_all(cs-cz,VS.110).gifVýjimka nepodmíněných výrazů.

Hh694604.collapse_all(cs-cz,VS.110).gifOč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

Hh694604.collapse_all(cs-cz,VS.110).gifProtokolování

Protokolování třída obsahuje statické metody zápisu

class Logger

Hh694604.collapse_all(cs-cz,VS.110).gifNapsat 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

Testování nativního kódu aplikace Test Explorer

Testování existujících aplikací C++ s Test Explorer