Freigeben über


Verwenden von Microsoft.VisualStudio.TestTools.CppUnitTestFramework

In diesem Thema werden die öffentlichen Member des Microsoft::VisualStudio::CppUnitTestFramework-Namespace auf.

Die Headerdateien sind im Ordner VisualStudio2012 [x86] InstallFolderUnitTest VC \ \ \ include.

Die lib-Dateien sind im Ordner VisualStudio2012 [x86] InstallFolderUnitTest VC \ \ \ lib.

In diesem Thema

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(de-de,VS.110).gifErstellen Sie Testklassen und Methoden

TEST_CLASS(className)

Erforderlich für jede Klasse, Testmethoden enthält.Identifiziert Klassenname wie eine Testklasse.TEST_CLASS muss an namescape Gültigkeitsbereich deklariert werden.

TEST_METHOD(methodName) 
{
    // test method body
}

Definiert methodName als Testmethode.TEST_METHOD muss im Kontext der Methode deklariert werden.

Hh694604.collapse_all(de-de,VS.110).gifInitialisierungs- und bereinigen Sie

Hh694604.collapse_all(de-de,VS.110).gifTestmethoden

TEST_METHOD_INITIALIZE(methodName) 
{
    // method initialization code
}

Definiert methodName als Methode, die ausgeführt wird, vor jeder Testmethode ausgeführt wird.TEST_METHOD_INITIALIZE kann in einer Testklasse nur einmal definiert werden und muss in der Testklasse definiert werden.

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

Definiert methodName als Methode, die ausgeführt wird, wenn eine Testmethode ausgeführt wurde.TEST_METHOD_CLEANUP kann in einer Testklasse nur einmal definiert werden und muss im Kontext der Testklasse definiert werden.

Hh694604.collapse_all(de-de,VS.110).gifTestklassen

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

Definiert methodName als Methode, wird nach jeder Testklasse erstellt wird.TEST_CLASS_INITIALIZE kann in einer Testklasse nur einmal definiert werden und muss im Kontext der Testklasse definiert werden.

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

Definiert methodName als Methode, wird nach jeder Testklasse erstellt wird.TEST_CLASS_CLEANUP kann in einer Testklasse nur einmal definiert werden und muss im Kontext der Testklasse definiert werden.

Hh694604.collapse_all(de-de,VS.110).gifTestmodule

TEST_MODULE_INITIALIZE(methodName)
{
    // module initialization code
}

Definiert die Methode methodName, die ausgeführt wird, wenn ein Modul geladen wird.TEST_MODULE_INITIALIZE kann in einem Testmodul nur einmal definiert werden und muss am Namespacebereich deklariert werden.

TEST_MODULE_CLEANUP(methodName)

Definiert die Methode methodName, die ausgeführt wird, wenn ein Modul entladen wird.TEST_MODULE_CLEANUP kann in einem Testmodul nur einmal definiert werden und muss am Namespacebereich deklariert werden.

Hh694604.collapse_all(de-de,VS.110).gifErstellen Sie Testattribute

Hh694604.collapse_all(de-de,VS.110).gifTestmethodenattribute

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

Fügt die Attribute hinzu, die einem oder mehreren TEST_METHOD_ATTRIBUTE Makros der Testmethode testClassName definiert werden.

Ein TEST_METHOD_ATTRIBUTE Makro definiert ein Attribut mit dem Namen attributeName und dem Wert attributeValue.

Hh694604.collapse_all(de-de,VS.110).gifTestklassenattribute

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

Fügt die Attribute hinzu, die einem oder mehreren TEST_CLASS_ATTRIBUTE Makros der Testklasse testClassName definiert werden.

Ein TEST_CLASS_ATTRIBUTE Makro definiert ein Attribut mit dem Namen attributeName und dem Wert attributeValue.

Hh694604.collapse_all(de-de,VS.110).gifTestmodulattribute

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

Fügt die Attribute hinzu, die einem oder mehreren TEST_MODULE_ATTRIBUTE Makros das Testmodul testModuleName definiert werden.

Ein TEST_MODULE_ATTRIBUTE Makro definiert ein Attribut mit dem Namen attributeName und dem Wert attributeValue.

Hh694604.collapse_all(de-de,VS.110).gifVordefinierte Attribute

Diese vordefinierten Attributmakros können für die Makros TEST_METHOD_ATTRIBUTE, TEST_CLASS_ATTRIBUTE OR TEST_MODULE_ATTRIBUTE ersetzt werden, das oben beschrieben wird.

TEST_OWNER(ownerAlias)

Definiert ein Attribut mit dem Namen Owner und dem Attributwert von ownerAlias.

TEST_DESCRIPTION(description)

Definiert ein Attribut mit dem Namen Description und dem Attributwert von Beschreibung.

TEST_PRIORITY(priority)

Definiert ein Attribut mit dem Namen Priority und dem Attributwert von Priorität.

TEST_WORKITEM(workitem)

Definiert ein Attribut mit dem Namen WorkItem und dem Attributwert von Arbeitsaufgabe.

TEST_IGNORE()

Definiert ein Attribut mit dem Namen Ignore und dem Attributwert von true.

CppUnitTestAssert.h

Hh694604.collapse_all(de-de,VS.110).gifAllgemeine Assertionen

Hh694604.collapse_all(de-de,VS.110).gifStellen Sie gleich

Überprüfen Sie, ob zwei Objekte gleich sind

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

Überprüfen Sie, ob zwei double-Werte gleich sind

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

Überprüfen Sie, ob zwei unverankert gleich sind

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

Überprüfen Sie, ob zwei Zeichenfolgen gleich sind char*

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

Überprüfen Sie, ob zwei Zeichenfolgen gleich sind 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(de-de,VS.110).gifStellen Sie nicht gleich

Überprüfen Sie, ob zwei double-Werte nicht gleich sind

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

Überprüfen Sie, ob zwei unverankert nicht gleich sind

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

Überprüfen Sie, ob zwei Zeichenfolgen gleich sind nicht char*

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

Überprüfen Sie, ob zwei Zeichenfolgen nicht gleich sind w_char*

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

Überprüfen Sie, ob zwei Verweise nicht auf Grundlage operator== gleich sind.

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

Hh694604.collapse_all(de-de,VS.110).gifSind gleiche

Überprüfen Sie, ob zwei Verweise auf die gleiche Objektinstanz (Identität) verweisen.

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

Hh694604.collapse_all(de-de,VS.110).gifNicht gleich sind

Überprüfen Sie, ob zwei Verweise nicht dieselbe Objektinstanz (Identität) verweisen.

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

Hh694604.collapse_all(de-de,VS.110).gifIst NULL

Überprüfen Sie, ob ein Zeiger NULL ist.

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

Hh694604.collapse_all(de-de,VS.110).gifist nicht NULL

Überprüfen Sie, ob ein Zeiger nicht NULL ist

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

Hh694604.collapse_all(de-de,VS.110).gifist true

Überprüfen Sie, ob eine Bedingung wahr ist

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

Hh694604.collapse_all(de-de,VS.110).gifDie ist falsch

Überprüfen Sie, ob eine Bedingung den Wert False hat

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

Hh694604.collapse_all(de-de,VS.110).gifFail

Sie sollten das fehlgeschlagen werden Testfallergebnis,

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

Hh694604.collapse_all(de-de,VS.110).gifWindows Runtime-Assertionen

Hh694604.collapse_all(de-de,VS.110).gifStellen Sie gleich

Überprüft, ob zwei Windows Runtime-Zeiger gleich sind.

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

Überprüft, ob zwei Platform::String^-Zeichenfolgen gleich sind.

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

Hh694604.collapse_all(de-de,VS.110).gifSind gleiche

Überprüft, ob zwei Windows Runtime-Verweise dasselbe Objekt verweisen.

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

Hh694604.collapse_all(de-de,VS.110).gifStellen Sie nicht gleich

Überprüft, ob zwei Windows Runtime-Zeiger nicht gleich sind.

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

Überprüft, ob zwei Platform::String^-Zeichenfolgen nicht gleich sind.

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

Hh694604.collapse_all(de-de,VS.110).gifNicht gleich sind

Überprüft, ob zwei Windows Runtime-Verweise nicht das gleiche Objekt verweisen.

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

Hh694604.collapse_all(de-de,VS.110).gifIst NULL

Überprüft, ob ein Windows Runtime-Zeiger ein nullptr ist.

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

Hh694604.collapse_all(de-de,VS.110).gifist nicht NULL

Überprüft, ob ein Windows Runtime-Zeiger kein nullptr ist.

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

Hh694604.collapse_all(de-de,VS.110).gifAusnahme-Assertionen

Hh694604.collapse_all(de-de,VS.110).gifRechnen Sie Ausnahme

Stellen Sie sicher, dass eine Funktion eine Ausnahme auslöst:

template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR> 
static void ExpectException(
    _FUNCTOR functor, 
    const wchar_t* message= NULL, 
    const __LineInfo* pLineInfo= NULL)

Stellen Sie sicher, dass eine Funktion eine Ausnahme auslöst:

template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE> 
    static void ExpectException(
    _RETURNTYPE (*func)(), 
    const wchar_t* message= NULL, 
    const __LineInfo* pLineInfo = NULL)

CppUnitTestLogger.h

Hh694604.collapse_all(de-de,VS.110).gifProtokollierung

Die Protokollierungsklasse enthält statische Methoden, um zu schreiben

class Logger

Hh694604.collapse_all(de-de,VS.110).gifNachricht schreiben

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

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

Beispiel

Dieser Code ist ein Beispiel für

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

Siehe auch

Konzepte

Überprüfen von Code mithilfe von Komponententests

Ausführen von Komponententests für systemeigenen Code mit dem Test-Explorer

Ausführen von Komponententests für vorhandene C++-Anwendungen mit dem Test-Explorer