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
테스트 클래스와 메서드를 작성 합니다.
TEST_CLASS(className)
테스트 메서드가 포함 된 각 클래스에 대 한 필요 합니다.식별 className 테스트 클래스.TEST_CLASSnamescape 범위에서 선언 되어야 합니다.
TEST_METHOD(methodName)
{
// test method body
}
정의 methodName 테스트 방법으로.TEST_METHOD클래스는 메서드 범위에서 선언 되어야 합니다.
초기화 및 정리
테스트 방법
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
정의 methodName 각 테스트 메서드를 실행 하기 전에 실행 하는 방법으로.TEST_METHOD_INITIALIZE테스트 클래스에만 한 번 정의 수와 테스트 클래스에서 정의 해야 합니다.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
정의 methodName 각 테스트 메서드를 실행 한 후 실행 하는 방법으로.TEST_METHOD_CLEANUP테스트 클래스에만 한 번 정의 수와 테스트 클래스 범위에 정의 되어야 합니다.
클래스 테스트
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
정의 methodName 각 테스트 클래스를 만든 후에 실행 하는 방법으로.TEST_CLASS_INITIALIZE테스트 클래스에만 한 번 정의 수와 테스트 클래스 범위에 정의 되어야 합니다.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
정의 methodName 각 테스트 클래스를 만든 후에 실행 하는 방법으로.TEST_CLASS_CLEANUP테스트 클래스에만 한 번 정의 수와 테스트 클래스 범위에 정의 되어야 합니다.
모듈 테스트
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
메서드 정의 methodName 모듈이 로드 될 때 실행 됩니다.TEST_MODULE_INITIALIZE테스트 모듈에만 한 번 정의할 수 및 네임 스페이스 범위에서 선언 해야 합니다.
TEST_MODULE_CLEANUP(methodName)
메서드 정의 methodName 모듈을 언로드할 때 실행 합니다.TEST_MODULE_CLEANUP테스트 모듈에만 한 번 정의할 수 및 네임 스페이스 범위에서 선언 해야 합니다.
테스트 특성을 만듭니다.
테스트 메서드 특성
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
특성 정의를 하나 이상 추가 TEST_METHOD_ATTRIBUTE 매크로 테스트 메서드에 testClassName.
A TEST_METHOD_ATTRIBUTE 매크로 정의 이름 가진 특성 특성 이름 과 특성 값.
특성 클래스를 테스트 합니다.
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
특성 정의를 하나 이상 추가 TEST_CLASS_ATTRIBUTE 매크로 테스트 클래스에 testClassName.
A TEST_CLASS_ATTRIBUTE 매크로 정의 이름 가진 특성 특성 이름 과 특성 값.
테스트 모듈 특성
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
특성 정의를 하나 이상 추가 TEST_MODULE_ATTRIBUTE 매크로 테스트 모듈 testModuleName.
A TEST_MODULE_ATTRIBUTE 매크로 정의 이름 가진 특성 특성 이름 과 특성 값.
미리 정의 된 특성
이러한 특성을 미리 정의 된 매크로 매크로를 대신 사용할 수 있는 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
일반 어설션
동일
두 개체가 서로 같은지 확인 합니다.
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)
동일 하지 않은
두 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)
동일
두 참조가 동일한 개체 인스턴스 (identity)를 참조 하는지 확인 합니다.
template<typename T>
static void AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
동일 하지 않습니다.
두 참조가 동일한 개체 인스턴스 (identity)를 참조를 확인 합니다.
template<typename T>
static void AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Null 인
포인터는 NULL 인지 확인 합니다.
template<typename T>
static void IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Null이 아닌
포인터는 NULL이 아닌지 확인 하십시오.
template<typename T>
static void IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
그렇습니다.
조건이 true 인지 확인 합니다.
static void IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
False입니다.
조건이 false 인지 확인 합니다.
static void IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
실패
실패할 경우 테스트 결과
static void Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Windows 런타임 어설션
동일
두 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)
동일
두 Windows 런타임 참조가 동일한 개체를 참조 하는 확인 합니다.
template<typename T>
static void AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
동일 하지 않은
두 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)
동일 하지 않습니다.
두 Windows 런타임 참조가 동일한 개체를 참조 하지 않는 확인 합니다.
template<typename T>
static void AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Null 인
Nullptr는 Windows 런타임 포인터 인지 확인 합니다.
template<typename T>
static void IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Null이 아닌
Windows 런타임 포인터는 nullptr 인지 확인 합니다.
template<typename T>
static void IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
예외를 어설션합니다.
예외를 예상 합니다.
확인 함수는 예외를 발생 시킵니다.
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
로 거
로 거 클래스 쓸 정적 메서드를 포함 합니다.
class Logger
메시지 쓰기
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");
}
};