Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu başlığı altında ad alanının genel üyeleri Microsoft::VisualStudio::CppUnitTestFramework listelenir. Microsoft Yerel Birim Test Çerçevesi'ni temel alan C++ birim testleri yazmak için bu API'leri kullanın. Konunun sonunda bir Kullanım Örneği vardır.
Üst bilgi ve lib dosyaları Visual Studio yükleme klasörü>\VC\Auxiliary\VS\UnitTest altında <bulunur.
Üst bilgi ve lib yolları, Yerel Test projesinde otomatik olarak yapılandırılır.
Bu konuda,
CppUnitTest.h
Test sınıfları ve yöntemleri oluşturma
TEST_CLASS(className)
Test yöntemlerini içeren her sınıf için gereklidir. className'i bir test sınıfı olarak tanımlar. TEST_CLASS ad alanı kapsamında bildirilmelidir.
TEST_METHOD(methodName)
{
// test method body
}
methodName'i bir test yöntemi olarak tanımlar. TEST_METHOD yöntemin sınıfı kapsamında bildirilmelidir.
Başlatma ve temizleme
Test yöntemleri
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
methodName öğesini her test yöntemi çalıştırilmeden önce çalışan bir yöntem olarak tanımlar. TEST_METHOD_INITIALIZE bir test sınıfında yalnızca bir kez tanımlanabilir ve test sınıfı kapsamında tanımlanmalıdır.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
methodName öğesini her test yöntemi çalıştırıldıktan sonra çalışan bir yöntem olarak tanımlar. TEST_METHOD_CLEANUP bir test sınıfında yalnızca bir kez tanımlanabilir ve test sınıfı kapsamında tanımlanmalıdır.
Test sınıfları
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
methodName öğesini her test sınıfı oluşturulmadan önce çalışan bir yöntem olarak tanımlar. TEST_CLASS_INITIALIZE bir test sınıfında yalnızca bir kez tanımlanabilir ve test sınıfı kapsamında tanımlanmalıdır.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
methodName öğesini her test sınıfı oluşturulduktan sonra çalışan bir yöntem olarak tanımlar. TEST_CLASS_CLEANUP bir test sınıfında yalnızca bir kez tanımlanabilir ve test sınıfı kapsamında tanımlanmalıdır.
Test modülleri
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
Bir modül yüklendiğinde çalıştırılan methodName yöntemini tanımlar. TEST_MODULE_INITIALIZE bir test modülünde yalnızca bir kez tanımlanabilir ve ad alanı kapsamında bildirilmelidir.
TEST_MODULE_CLEANUP(methodName)
Bir modül kaldırıldığında çalıştırılan methodName yöntemini tanımlar. TEST_MODULE_CLEANUP bir test modülünde yalnızca bir kez tanımlanabilir ve ad alanı kapsamında bildirilmelidir.
Test öznitelikleri oluşturma
Test yöntemi öznitelikleri
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
Test yöntemi testMethodName'e bir veya daha fazla TEST_METHOD_ATTRIBUTE makroyla tanımlanan öznitelikleri ekler.
MakroTEST_METHOD_ATTRIBUTE, attributeName adlı bir özniteliği ve attributeValue değerini tanımlar.
Sınıf özniteliklerini test edin
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
Test sınıfı testClassName öğesine bir veya daha fazla TEST_CLASS_ATTRIBUTE makroyla tanımlanan öznitelikleri ekler.
MakroTEST_CLASS_ATTRIBUTE, attributeName adlı bir özniteliği ve attributeValue değerini tanımlar.
Modül özniteliklerini test edin
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
Test modülü testModuleName'e bir veya daha fazla TEST_MODULE_ATTRIBUTE makroyla tanımlanan öznitelikleri ekler.
MakroTEST_MODULE_ATTRIBUTE, attributeName adlı bir özniteliği ve attributeValue değerini tanımlar.
Önceden tanımlanmış öznitelikler
Bu önceden tanımlanmış öznitelik makroları, yaygın durumlar için kolaylık sağlamak amacıyla sağlanır. Bunlar yukarıda açıklanan makroyla TEST_METHOD_ATTRIBUTE değiştirilebilir.
TEST_OWNER(ownerAlias)
sahipAlias'ın adı Owner ve öznitelik değeri ile bir TEST_METHOD_ATTRIBUTE tanımlar.
TEST_DESCRIPTION(description)
adı Description ve açıklama öznitelik değeri ile bir TEST_METHOD_ATTRIBUTE tanımlar.
TEST_PRIORITY(priority)
adı Priority ve öncelik öznitelik değeri ile bir TEST_METHOD_ATTRIBUTE tanımlar.
TEST_WORKITEM(workitem)
workItem'in adı WorkItem ve öznitelik değeri ile bir TEST_METHOD_ATTRIBUTE tanımlar.
TEST_IGNORE()
adı Ignore ve öznitelik değeri trueile bir TEST_METHOD_ATTRIBUTE tanımlar.
CppUnitTestAssert.h
Genel Onaylar
Eşit
İki nesnenin eşit olduğunu doğrulayın
template<typename T>
static void Assert::AreEqual(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki çiftin eşit olduğunu doğrulayın
static void Assert::AreEqual(
double expected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki kayan noktanın eşit olduğunu doğrulayın
static void Assert::AreEqual(
float expected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki karakter* dizenin eşit olduğunu doğrulayın
static void Assert::AreEqual(
const char* expected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki w_char* dizenin eşit olduğunu doğrulayın
static void Assert::AreEqual(
const wchar_t* expected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Eşit Değil
İki çiftin eşit olmadığını doğrulayın
static void Assert::AreNotEqual(
double notExpected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki kayan değerin eşit olmadığını doğrulayın
static void Assert::AreNotEqual(
float notExpected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki char* dizesinin eşit olmadığını doğrulayın
static void Assert::AreNotEqual(
const char* notExpected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
İki w_char* dizenin eşit olmadığını doğrulayın
static void Assert::AreNotEqual(
const wchar_t* notExpected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
operator== temelinde iki başvuruya eşit olmadığını doğrulayın.
template<typename T>
static void Assert::AreNotEqual(
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Aynı
İki başvurunun aynı nesne örneğine (kimlik) başvurduğunu doğrulayın.
template<typename T>
static void Assert::AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Aynı Değil
İki başvurunun aynı nesne örneğine (kimlik) başvurmadığını doğrulayın.
template<typename T>
static void Assert::AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Is Null
İşaretçinin NULL olduğunu doğrulayın.
template<typename T>
static void Assert::IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Null Değil
İşaretçinin NULL olmadığını doğrulama
template<typename T>
static void Assert::IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Is True
Koşulun doğru olduğunu doğrulama
static void Assert::IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Yanlış
Koşulun yanlış olduğunu doğrulama
static void Assert::IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Başarısız
Test çalışması sonucunun başarısız olmasını zorlama
static void Assert::Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Windows Çalışma Zamanı Onayları
Eşit
İki Windows Çalışma Zamanı işaretçinin eşit olduğunu doğrular.
template<typename T>
static void Assert::AreEqual(
T^ expected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
İki Platform::String^ dizesinin eşit olduğunu doğrular.
template<typename T>
static void Assert::AreEqual(
T^ expected,
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Aynı
İki Windows Çalışma Zamanı başvurusunun aynı nesneye başvurduğunu doğrular.
template<typename T>
static void Assert::AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Eşit Değil
İki Windows Çalışma Zamanı işaretçinin eşit olmadığını doğrular.
template<typename T>
static void Assert::AreNotEqual(
T^ notExpected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
İki Platform::String^ dizesinin eşit olmadığını doğrular.
static void Assert::AreNotEqual(
Platform::String^ notExpected,
Platform::String^ actual,
bool ignoreCase = false,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Aynı Değil
İki Windows Çalışma Zamanı başvurusunun aynı nesneye başvurmadığını doğrular.
template<typename T>
static void Assert::AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Is Null
Windows Çalışma Zamanı işaretçinin nullptr olduğunu doğrular.
template<typename T>
static void Assert::IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Null Değil
Windows Çalışma Zamanı işaretçinin nullptr olmadığını doğrular.
template<typename T>
static void Assert::IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Özel Durum Onayları
Özel Durum Bekle
İşlevin özel durum oluşturduğunu doğrulayın:
template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void Assert::ExpectException(
_FUNCTOR functor,
const wchar_t* message= NULL,
const __LineInfo* pLineInfo= NULL)
İşlevin özel durum oluşturduğunu doğrulayın:
template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE>
static void Assert::ExpectException(
_RETURNTYPE (*func)(),
const wchar_t* message= NULL,
const __LineInfo* pLineInfo = NULL)
CppUnitTestLogger.h
Günlükçü
Günlükçü sınıfı, Çıkış Penceresi'ne yazmak için statik yöntemler içerir.
İleti Yaz
Çıkış Penceresine dize yazma
static void Logger::WriteMessage(const wchar_t* message)
static void Logger::WriteMessage(const char* message)
Örnek
Bu kod, VSCppUnit kullanımına bir örnektir. Öznitelik meta verileri, fikstürler, onaylarla birim testleri ve özel günlük örnekleri içerir.
// 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");
}
};