다음을 통해 공유


Microsoft.VisualStudio.TestTools.CppUnitTestFramework 사용

이 항목의 공용 멤버가 나열 된 Microsoft::VisualStudio::CppUnitTestFramework 네임 스페이스입니다.

헤더 파일에는 VisualStudio2012 [86] x InstallFolder**\VC\UnitTest\include** 폴더.

Lib 파일에는 VisualStudio2012 [86] x InstallFolder**\VC\UnitTest\lib** 폴더.

항목 내용

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(ko-kr,VS.110).gif테스트 클래스와 메서드를 작성 합니다.

TEST_CLASS(className)

테스트 메서드가 포함 된 각 클래스에 대 한 필요 합니다.식별 className 테스트 클래스.TEST_CLASSnamescape 범위에서 선언 되어야 합니다.

TEST_METHOD(methodName) 
{
    // test method body
}

정의 methodName 테스트 방법으로.TEST_METHOD클래스는 메서드 범위에서 선언 되어야 합니다.

Hh694604.collapse_all(ko-kr,VS.110).gif초기화 및 정리

Hh694604.collapse_all(ko-kr,VS.110).gif테스트 방법

TEST_METHOD_INITIALIZE(methodName) 
{
    // method initialization code
}

정의 methodName 각 테스트 메서드를 실행 하기 전에 실행 하는 방법으로.TEST_METHOD_INITIALIZE테스트 클래스에만 한 번 정의 수와 테스트 클래스에서 정의 해야 합니다.

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

정의 methodName 각 테스트 메서드를 실행 한 후 실행 하는 방법으로.TEST_METHOD_CLEANUP테스트 클래스에만 한 번 정의 수와 테스트 클래스 범위에 정의 되어야 합니다.

Hh694604.collapse_all(ko-kr,VS.110).gif클래스 테스트

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

정의 methodName 각 테스트 클래스를 만든 후에 실행 하는 방법으로.TEST_CLASS_INITIALIZE테스트 클래스에만 한 번 정의 수와 테스트 클래스 범위에 정의 되어야 합니다.

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

정의 methodName 각 테스트 클래스를 만든 후에 실행 하는 방법으로.TEST_CLASS_CLEANUP테스트 클래스에만 한 번 정의 수와 테스트 클래스 범위에 정의 되어야 합니다.

Hh694604.collapse_all(ko-kr,VS.110).gif모듈 테스트

TEST_MODULE_INITIALIZE(methodName)
{
    // module initialization code
}

메서드 정의 methodName 모듈이 로드 될 때 실행 됩니다.TEST_MODULE_INITIALIZE테스트 모듈에만 한 번 정의할 수 및 네임 스페이스 범위에서 선언 해야 합니다.

TEST_MODULE_CLEANUP(methodName)

메서드 정의 methodName 모듈을 언로드할 때 실행 합니다.TEST_MODULE_CLEANUP테스트 모듈에만 한 번 정의할 수 및 네임 스페이스 범위에서 선언 해야 합니다.

Hh694604.collapse_all(ko-kr,VS.110).gif테스트 특성을 만듭니다.

Hh694604.collapse_all(ko-kr,VS.110).gif테스트 메서드 특성

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

특성 정의를 하나 이상 추가 TEST_METHOD_ATTRIBUTE 매크로 테스트 메서드에 testClassName.

A TEST_METHOD_ATTRIBUTE 매크로 정의 이름 가진 특성 특성 이름 과 특성 값.

Hh694604.collapse_all(ko-kr,VS.110).gif특성 클래스를 테스트 합니다.

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

특성 정의를 하나 이상 추가 TEST_CLASS_ATTRIBUTE 매크로 테스트 클래스에 testClassName.

A TEST_CLASS_ATTRIBUTE 매크로 정의 이름 가진 특성 특성 이름 과 특성 값.

Hh694604.collapse_all(ko-kr,VS.110).gif테스트 모듈 특성

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

특성 정의를 하나 이상 추가 TEST_MODULE_ATTRIBUTE 매크로 테스트 모듈 testModuleName.

A TEST_MODULE_ATTRIBUTE 매크로 정의 이름 가진 특성 특성 이름 과 특성 값.

Hh694604.collapse_all(ko-kr,VS.110).gif미리 정의 된 특성

이러한 특성을 미리 정의 된 매크로 매크로를 대신 사용할 수 있는 TEST_METHOD_ATTRIBUTE, TEST_CLASS_ATTRIBUTE, 또는 TEST_MODULE_ATTRIBUTE 위에서 설명한.

TEST_OWNER(ownerAlias)

특성 이름의 정의 Owner 속성 값을 ownerAlias.

TEST_DESCRIPTION(description)

특성 이름의 정의 Description 속성 값을 설명.

TEST_PRIORITY(priority)

특성 이름의 정의 Priority 속성 값을 우선 순위.

TEST_WORKITEM(workitem)

특성 이름의 정의 WorkItem 속성 값을 작업 항목.

TEST_IGNORE()

특성 이름의 정의 Ignore 속성 값을 true.

CppUnitTestAssert.h

Hh694604.collapse_all(ko-kr,VS.110).gif일반 어설션

Hh694604.collapse_all(ko-kr,VS.110).gif동일

두 개체가 서로 같은지 확인 합니다.

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

두 double이 서로 같은지 확인 합니다.

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

두 개의 float가 같은지 확인 하십시오.

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

두 char * 문자열이 서로 같은지 확인 합니다.

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

두 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(ko-kr,VS.110).gif동일 하지 않은

두 double 같지 않은지 확인 합니다.

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

두 float 같지 않은지 확인 합니다.

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

두 개의 char * 문자열 같지 않은지 확인 합니다.

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

두 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)

두 개의 참조 연산자를 기준으로 같지 않은지 확인 = =.

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

Hh694604.collapse_all(ko-kr,VS.110).gif동일

두 참조가 동일한 개체 인스턴스 (identity)를 참조 하는지 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gif동일 하지 않습니다.

두 참조가 동일한 개체 인스턴스 (identity)를 참조를 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gifNull 인

포인터는 NULL 인지 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gifNull이 아닌

포인터는 NULL이 아닌지 확인 하십시오.

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

Hh694604.collapse_all(ko-kr,VS.110).gif그렇습니다.

조건이 true 인지 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gifFalse입니다.

조건이 false 인지 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gif실패

실패할 경우 테스트 결과

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

Hh694604.collapse_all(ko-kr,VS.110).gifWindows 런타임 어설션

Hh694604.collapse_all(ko-kr,VS.110).gif동일

두 Windows 런타임 포인터 같은지를 확인 합니다.

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

두 확인 Platform::String ^ 문자열은 동일 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gif동일

두 Windows 런타임 참조가 동일한 개체를 참조 하는 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gif동일 하지 않은

두 Windows 런타임 포인터 같지 않은지 확인 합니다.

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

두 확인 Platform::String ^ 문자열이 같지 않습니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gif동일 하지 않습니다.

두 Windows 런타임 참조가 동일한 개체를 참조 하지 않는 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gifNull 인

Nullptr는 Windows 런타임 포인터 인지 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gifNull이 아닌

Windows 런타임 포인터는 nullptr 인지 확인 합니다.

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

Hh694604.collapse_all(ko-kr,VS.110).gif예외를 어설션합니다.

Hh694604.collapse_all(ko-kr,VS.110).gif예외를 예상 합니다.

확인 함수는 예외를 발생 시킵니다.

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

확인 함수는 예외를 발생 시킵니다.

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

CppUnitTestLogger.h

Hh694604.collapse_all(ko-kr,VS.110).gif로 거

로 거 클래스 쓸 정적 메서드를 포함 합니다.

class Logger

Hh694604.collapse_all(ko-kr,VS.110).gif메시지 쓰기

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

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

예제

이 코드의 예입니다.

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

참고 항목

개념

단위 테스트를 사용하여 코드 확인

테스트 탐색기를 사용하여 네이티브 코드 단위 테스트

테스트 탐색기를 사용하여 기존 C++ 응용 프로그램 단위 테스트