Microsoft.VisualStudio.TestTools.CppUnitTestFramework kullanma
Bu konuda ortak üyeleri listeler Microsoft::VisualStudio::CppUnitTestFramework ad alanı.
Üstbilgi dosyaları bulunan [x 86] VisualStudio2012 InstallFolder**\VC\UnitTest\include** klasörü.
Lib dosya içinde bulunan [x 86] VisualStudio2012 InstallFolder**\VC\UnitTest\lib** klasörü.
Bu konuda
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
Sınama Sýnýflar ve yöntemler yaratmak
TEST_CLASS(className)
Sınama yöntemleri içeren her sınıf için gereklidir.Tanımlayan SınıfAdı test sınıfı olarak.TEST_CLASSnamescape kapsamında bildirilmesi gerekir.
TEST_METHOD(methodName)
{
// test method body
}
Tanımlar methodName test yöntemi olarak.TEST_METHODyöntemin sınıf kapsamı içinde bildirilmelidir.
Başlatma ve temizleme
Test yöntemleri
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
Tanımlar methodName her bir test yöntemi çalıştırmadan önce bir yöntem olarak.TEST_METHOD_INITIALIZEyalnızca bir kez test sınıfta tanımlanabilir ve test sınıfında tanımlanmış olmalıdır.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
Tanımlar methodName her bir test yöntemi çalıştırdıktan sonra bir yöntem olarak.TEST_METHOD_CLEANUPyalnızca bir kez test sınıfta tanımlanabilir ve test sınıf kapsamı içinde tanımlanmalıdır.
Test sınıfları
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
Tanımlar methodName her test sınıfı oluşturduktan sonra bir yöntem olarak.TEST_CLASS_INITIALIZEyalnızca bir kez test sınıfta tanımlanabilir ve test sınıf kapsamı içinde tanımlanmalıdır.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
Tanımlar methodName her test sınıfı oluşturduktan sonra bir yöntem olarak.TEST_CLASS_CLEANUPyalnızca bir kez test sınıfta tanımlanabilir ve test sınıf kapsamı içinde tanımlanmalıdır.
Test modülleri
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
Yöntemi tanımlar methodName bir modül yüklendiğinde çalışır.TEST_MODULE_INITIALIZEyalnızca bir kez test modülünde tanımlanabilir ve ad alanı kapsamında bildirilmesi gerekir.
TEST_MODULE_CLEANUP(methodName)
Yöntemi tanımlar methodName bir modül bellekten kaldırıldığında çalışır.TEST_MODULE_CLEANUPyalnızca bir kez test modülünde tanımlanabilir ve ad alanı kapsamında bildirilmesi gerekir.
Sınama öznitelikler oluşturmak
Sınama yöntemi öznitelikleri
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
Bir veya daha fazla tanımlı öznitelikler ekler TEST_METHOD_ATTRIBUTE test yöntemine makroları testClassName.
A TEST_METHOD_ATTRIBUTE makro adında bir öznitelik tanımlar ÖznitelikAdı ve ÖznitelikDeğeri.
Test sınıfı öznitelikleri
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
Bir veya daha fazla tanımlı öznitelikler ekler TEST_CLASS_ATTRIBUTE makroları sına sınıfına testClassName.
A TEST_CLASS_ATTRIBUTE makro adında bir öznitelik tanımlar ÖznitelikAdı ve ÖznitelikDeğeri.
Test modülü öznitelikleri
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
Bir veya daha fazla tanımlı öznitelikler ekler TEST_MODULE_ATTRIBUTE test modülü makro testModuleName.
A TEST_MODULE_ATTRIBUTE makro adında bir öznitelik tanımlar ÖznitelikAdı ve ÖznitelikDeğeri.
Önceden tanımlanmış öznitelikleri
Bu öntanımlı öznitelik makrolar için makrolar yerine kullanılacak TEST_METHOD_ATTRIBUTE, TEST_CLASS_ATTRIBUTE, ya da TEST_MODULE_ATTRIBUTE yukarıda açıklanan.
TEST_OWNER(ownerAlias)
Bu ada sahip bir öznitelik tanımlar Owner ve öznitelik değeri ownerAlias.
TEST_DESCRIPTION(description)
Bu ada sahip bir öznitelik tanımlar Description ve öznitelik değeri Açıklama.
TEST_PRIORITY(priority)
Bu ada sahip bir öznitelik tanımlar Priority ve öznitelik değeri öncelik.
TEST_WORKITEM(workitem)
Bu ada sahip bir öznitelik tanımlar WorkItem ve öznitelik değeri çalışma öğesi.
TEST_IGNORE()
Bu ada sahip bir öznitelik tanımlar Ignore ve öznitelik değeri true.
CppUnitTestAssert.h
Genel zorunlu
Eşit
İki nesne eşit olduğundan emin olun
template<typename T>
static void AreEqual(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki çift eşit olduğundan emin olun
static void AreEqual(
double expected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki gösterildiði eşit olduğundan emin olun
static void AreEqual(
float expected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
* İki karakter dizeleri eşit olduğundan emin olun
static void AreEqual(
const char* expected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki w_char * dizeler eşit olduğundan emin olun
static void AreEqual(
const wchar_t* expected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Eşit değildir
İki çift eşit doğrulayın
static void AreNotEqual(
double notExpected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki gösterildiði eşit doğrulayın
static void AreNotEqual(
float notExpected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
* İki karakter dizeleri eşit doğrulayın
static void AreNotEqual(
const char* notExpected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki w_char * dizeler eşit doğrulayın
static void AreNotEqual(
const wchar_t* notExpected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki başvuru operatöre dayanan eşit doğrulayın ==.
template<typename T>
static void AreNotEqual(
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Aynı olan
İki başvuru (kimlik) aynı nesne örneğine başvurmak doğrulayın.
template<typename T>
static void AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Aynı değildir
İki başvuru aynı nesne örneği (kimlik) göstermediğinden doğrulayın.
template<typename T>
static void AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Null
Bir işaretçi null olduğundan emin olun.
template<typename T>
static void IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Boş değil
Bir işaretçi null olmadığından emin olun
template<typename T>
static void IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Doğrudur
Bir koşul doğru olduğundan emin olun
static void IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Yanlış
Koşul yanlış olduğunu doğrulayın
static void IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Başarısız
Başarısız için sınama durumu sonuca zorla
static void Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Windows çalışma zamanı zorunlu
Eşit
İki Windows Runtime işaretçiler eşit olduğunu doğrular.
template<typename T>
static void AreEqual(
T^ expected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Bu iki doğrular Platform::String ^ dizeleridir eşit.
template<typename T>
static void AreEqual(
T^ expected,
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Aynı olan
İki Windows Runtime başvuruları aynı nesneye başvuran doğrular.
template<typename T>
static void AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Eşit değildir
İki Windows Runtime işaretçiler eşit olmayan doğrular.
template<typename T>
static void AreNotEqual(
T^ notExpected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Bu iki doğrular Platform::String ^ dizeleri eşit değildir.
static void AreNotEqual(
Platform::String^ notExpected,
Platform::String^ actual,
bool ignoreCase = false,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Aynı değildir
İki Windows çalışma zamanı başvuru aynı nesneye başvuran değil doğrular.
template<typename T>
static void AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Null
Windows çalışma zamanı gösteren bir işaretçi bir nullptr olduğunu doğrular.
template<typename T>
static void IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Boş değil
Windows çalışma zamanı gösteren bir işaretçi bir nullptr olmadığını doğrular.
template<typename T>
static void IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Özel durum zorunlu
Özel durum beklediğiniz
Bir işlevin bir özel durum oluşturur doğrulayın:
template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void ExpectException(
_FUNCTOR functor,
const wchar_t* message= NULL,
const __LineInfo* pLineInfo= NULL)
Bir işlevin bir özel durum oluşturur doğrulayın:
template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE>
static void ExpectException(
_RETURNTYPE (*func)(),
const wchar_t* message= NULL,
const __LineInfo* pLineInfo = NULL)
CppUnitTestLogger.h
Günlükçü
Günlükçü sınıfı, yazmak için statik yöntemler içerir.
class Logger
İleti Yaz
static void
Logger::WriteMessage(const wchar_t* message)
static void
Logger::WriteMessage(const char* message)
Örnek
Bu kod örneği yer almaktadı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");
}
};
Ayrıca bkz.
Kavramlar
Kod birimi sınamaları kullanarak doğrulama