Sdílet prostřednictvím


Referenční informace k rozhraní API Microsoft.VisualStudio.TestTools.CppUnitTestFramework

Toto téma obsahuje seznam veřejných členů Microsoft::VisualStudio::CppUnitTestFramework oboru názvů. Tato rozhraní API slouží k zápisu testů jednotek jazyka C++ na základě architektury Microsoft Native Unit Test Framework. Na konci tématu je příklad použití.

Soubory hlaviček a knihovny se nacházejí v instalační <složce> sady Visual Studio\VC\Auxiliary\VS\UnitTest.

Cesty hlaviček a knihovny se automaticky konfigurují v nativním testovacím projektu.

V tomto tématu

CppUnitTest.h

CppUnitTest.h

Vytvoření testovacích tříd a metod

TEST_CLASS(className)

Požadováno pro každou třídu obsahující testovací metody. Identifikuje className jako testovací třídu. TEST_CLASS musí být deklarován v oboru názvů.

TEST_METHOD(methodName)
{
    // test method body
}

Definuje methodName jako testovací metodu. TEST_METHOD musí být deklarován v oboru třídy metody.

Inicializace a vyčištění

Testovací metody

TEST_METHOD_INITIALIZE(methodName)
{
    // method initialization code
}

Definuje methodName jako metodu, která se spouští před spuštěním každé testovací metody. TEST_METHOD_INITIALIZE lze definovat pouze jednou v testovací třídě a musí být definován v oboru testovací třídy.

TEST_METHOD_CLEANUP(methodName)
{
    // test method cleanup  code
}

Definuje methodName jako metodu, která se spustí po každém spuštění testovací metody. TEST_METHOD_CLEANUP lze definovat pouze jednou v testovací třídě a musí být definován v oboru testovací třídy.

Testovací třídy

TEST_CLASS_INITIALIZE(methodName)
{
    // test class initialization  code
}

Definuje methodName jako metodu, která se spouští před vytvořením každé testovací třídy. TEST_CLASS_INITIALIZE lze definovat pouze jednou v testovací třídě a musí být definován v oboru testovací třídy.

TEST_CLASS_CLEANUP(methodName)
{
    // test class cleanup  code
}

Definuje methodName jako metodu, která se spouští po vytvoření každé testovací třídy. TEST_CLASS_CLEANUP lze definovat pouze jednou v testovací třídě a musí být definován v oboru testovací třídy.

Testovací moduly

TEST_MODULE_INITIALIZE(methodName)
{
    // module initialization code
}

Definuje metodu methodName , která se spustí při načtení modulu. TEST_MODULE_INITIALIZE lze definovat pouze jednou v testovacím modulu a musí být deklarován v oboru názvů.

TEST_MODULE_CLEANUP(methodName)

Definuje metodu methodName , která se spustí při uvolnění modulu. TEST_MODULE_CLEANUP lze definovat pouze jednou v testovacím modulu a musí být deklarován v oboru názvů.

Vytvoření testovacích atributů

Atributy testovací metody

BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
    TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
    ...
END_TEST_METHOD_ATTRIBUTE()

Přidá atributy definované jedním nebo více TEST_METHOD_ATTRIBUTE makry do testovací metody testMethodName.

Makro TEST_METHOD_ATTRIBUTE definuje atribut s name attributeName a value attributeValue.

Testovat atributy třídy

BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
    TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
    ...
END_TEST_CLASS_ATTRIBUTE()

Přidá atributy definované jedním nebo více TEST_CLASS_ATTRIBUTE makry do třídy testClassName.

Makro TEST_CLASS_ATTRIBUTE definuje atribut s name attributeName a value attributeValue.

Atributy testovacího modulu

BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
    TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
    ...
END_TEST_MODULE_ATTRIBUTE()

Přidá atributy definované jedním nebo více TEST_MODULE_ATTRIBUTE makry do testovacího modulu testModuleName.

Makro TEST_MODULE_ATTRIBUTE definuje atribut s name attributeName a value attributeValue.

Předdefinované atributy

Tato předdefinovaná makra atributů jsou poskytována jako pohodlí pro běžné případy. Dají se nahradit výše popsaným makrem TEST_METHOD_ATTRIBUTE .

TEST_OWNER(ownerAlias)

TEST_METHOD_ATTRIBUTE Definuje s názvem Owner a hodnotou atributu ownerAlias.

TEST_DESCRIPTION(description)

TEST_METHOD_ATTRIBUTE Definuje název Description a hodnotu atributu popisu.

TEST_PRIORITY(priority)

TEST_METHOD_ATTRIBUTE Definuje s názvem Priority a hodnotou atributu priority.

TEST_WORKITEM(workitem)

TEST_METHOD_ATTRIBUTE Definuje s názvem WorkItem a hodnotou atributu workItem.

TEST_IGNORE()

TEST_METHOD_ATTRIBUTE Definuje s názvem Ignore a hodnotou atributu true.

CppUnitTestAssert.h

Obecné kontrolní výrazy

Jsou stejné

Ověřte, že jsou dva objekty stejné.

template<typename T>
static void Assert::AreEqual(
    const T& expected,
    const T& actual,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že jsou dvě dvojité rovny.

static void Assert::AreEqual(
    double expected,
    double actual,
    double tolerance,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že jsou dvě plovoucí hodnoty rovny.

static void Assert::AreEqual(
    float expected,
    float actual,
    float tolerance,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že jsou dva řetězce typu char* stejné.

static void Assert::AreEqual(
    const char* expected,
    const char* actual,
    bool ignoreCase = false,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že jsou dva řetězce w_char* stejné.

static void Assert::AreEqual(
    const wchar_t* expected,
    const wchar_t* actual,
    bool ignoreCase = false,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Nerovná se

Ověřte, že se dvě dvojité sady nerovnají.

static void Assert::AreNotEqual(
    double notExpected,
    double actual,
    double tolerance,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že se dvě plovoucí hodnoty nerovnají.

static void Assert::AreNotEqual(
    float notExpected,
    float actual,
    float tolerance,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že dva řetězce typu char* nejsou stejné.

static void Assert::AreNotEqual(
    const char* notExpected,
    const char* actual,
    bool ignoreCase = false,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že se dva řetězce w_char* nerovnají.

static void Assert::AreNotEqual(
    const wchar_t* notExpected,
    const wchar_t* actual,
    bool ignoreCase = false,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Ověřte, že se dva odkazy nerovnají na základě operátoru==.

template<typename T>
static void Assert::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 (identitu).

template<typename T>
static void Assert::AreSame(
    const T& expected,
    const T& actual,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Nejsou stejné

Ověřte, že dva odkazy neodkazují na stejnou instanci objektu (identitu).

template<typename T>
static void Assert::AreNotSame (
    const T& notExpected,
    const T& actual,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Je null

Ověřte, že je ukazatel null.

template<typename T>
static void Assert::IsNull(
    const T* actual,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Is Not Null

Ověřte, že ukazatel nemá hodnotu NULL.

template<typename T>
static void Assert::IsNotNull(
    const T* actual,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

Je true

Ověření, že je podmínka pravdivá

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

Je false

Ověření, že je podmínka nepravda

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

Chyba

Vynutit selhání výsledku testovacího případu

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

kontrolní výrazy prostředí Windows Runtime

Jsou stejné

Ověřuje, že jsou dva prostředí Windows Runtime ukazatele stejné.

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

Ověřuje, že jsou dva řetězce Platform::String^ stejné.

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

Jsou stejné

Ověří, že dva prostředí Windows Runtime odkazují na stejný objekt.

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

Nerovná se

Ověřuje, že dva prostředí Windows Runtime ukazatele nejsou stejné.

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

Ověřuje, že se dva řetězce Platform::String^ nerovnají.

static void Assert::AreNotEqual(
    Platform::String^ notExpected,
    Platform::String^ actual,
    bool ignoreCase = false,
    Platform::String^ message= nullptr,
    const __LineInfo* pLineInfo= nullptr)

Nejsou stejné

Ověřuje, že dva prostředí Windows Runtime odkazy neodkazují na stejný objekt.

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

Je null

Ověřuje, že ukazatel prostředí Windows Runtime je nullptr.

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

Is Not Null

Ověřuje, že ukazatel prostředí Windows Runtime není nullptr.

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

Kontrolní výrazy výjimek

Očekávejte výjimku

Ověřte, že funkce vyvolá výjimku:

template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void Assert::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 Assert::ExpectException(
    _RETURNTYPE (*func)(),
    const wchar_t* message= NULL,
    const __LineInfo* pLineInfo = NULL)

CppUnitTestLogger.h

Logger

Třída Logger obsahuje statické metody pro zápis do výstupního okna.

Napsat zprávu

Zápis řetězce do okna Výstup

static void Logger::WriteMessage(const wchar_t* message)
static void Logger::WriteMessage(const char* message)

Příklad

Tento kód je příkladem použití VSCppUnit. Obsahuje příklady metadat atributů, příslušenství, testování jednotek s kontrolními výrazy a vlastní protokolování.

// 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");
    }
};

Viz také