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.
TaEF, Testleri yazmayı kolaylaştırmak için ayrıntılı günlükleri en az miktarda kodla raporlamak için WexLogger'ın avantajlarından yararlanan "Doğrula" çerçevesini sağlar. Verify çerçevesi, testlerin yapılandırılmış günlük çıkışı sağlamasına yardımcı olur; belirli bir doğrulama başarılı olursa başarılı bir günlük verir ve doğrulama başarısız olursa detaylı günlük bilgileri verir.
C++'tan Doğrula'yı kullanma
Doğrulama API'si C++ dilinde "Verify.h" üst bilgi dosyasında tanımlanan bir makro kümesi olarak gösterilir (Not: Verify.h'yi açıkça eklemeniz gerekmez; C++ testlerini işaretlemek ve Verify ve WexLogger API'leriyle etkileşim kurmak için ihtiyacınız olan her şeyi içeren "WexTestClass.h" öğesini eklemeniz gerekir).
Yerel C++ Testleri için aşağıdaki Doğrulama Makroları kullanılabilir.
| Makro | İşlevsellik |
|---|---|
| VERIFY_ARE_EQUAL(beklenen, gerçek, [isteğe bağlı mesaj]) | Belirtilen iki nesnenin eşit olduğunu doğrular. Ayrıca, sağlanan özel bir mesajı loglar. |
| VERIFY_ARE_NOT_EQUAL(beklenen, gerçek, [isteğe bağlı ileti]) | Belirtilen iki nesnenin eşit olmadığını doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_IS_GREATER_THAN(beklenenDahaBüyük, beklenenDahaKüçük, [isteğe bağlı ileti]) | İlk parametrenin ikinci parametreden büyük olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_IS_GREATER_THAN_OR_EQUAL(expectedGreater, expectedLess, [isteğe bağlı ileti]) | İlk parametrenin ikinci parametreden büyük veya buna eşit olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_IS_LESS_THAN(expectedLess, expectedGreater, [isteğe bağlı ileti]) | İlk parametrenin ikinci parametreden küçük olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_IS_LESS_THAN_OR_EQUAL(expectedLess, expectedGreater, [isteğe bağlı ileti]) | İlk parametrenin ikinci parametreye eşit veya daha küçük olduğunu doğrular. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_ARE_SAME(beklenen, gerçek, [isteğe bağlı ileti]) | Belirtilen iki parametrenin aynı nesneye başvurduğunu doğrular. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_ARE_NOT_SAME(beklenen, gerçek, [isteğe bağlı ileti]) | Belirtilen iki parametrenin aynı nesneye başvurmadığını doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_FAIL ([isteğe bağlı ileti]) | Koşulların hiçbirini kontrol etmeden başarısız olur. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_IS_TRUE(koşul, [isteğe bağlı ileti]) | Belirtilen bool değerinin true olduğunu doğrular. Çağrı yap VERIFY_IS_TRUE(!!__condition) veya Win32 BOOL'yi test etmek amacıyla VERIFY_WIN32_BOOL_SUCCEEDED(__condition). Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_IS_FALSE(koşul, [isteğe bağlı ileti]) | Belirtilen bool değerinin false olduğunu doğrular. Call VERIFY_IS_FALSE(!!__condition) veya VERIFY_WIN32_BOOL_FAILED(__condition) çağrısını, bir Win32 BOOL'yi test etmek için kullanın. Ayrıca, verilen özel bir iletiyi günlüğe kaydeder. |
| VERIFY_IS_NULL(nesne, [isteğe bağlı ileti]) | Belirtilen parametrenin NULL olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_IS_NOT_NULL(nesne, [isteğe bağlı ileti]) | Belirtilen parametrenin NULL olmadığını doğrular. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_SUCCEEDED(hresult, [isteğe bağlı ileti]) | Belirtilen HRESULT'un başarılı olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_SUCCEEDED_RETURN(hresult, [isteğe bağlı ileti]) | Belirtilen HRESULT'un başarılı olduğunu doğrular ve makroya geçirilen HRESULT değerini döndürür. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_FAILED(hresult, [isteğe bağlı ileti]) | Belirtilen HRESULT'un başarılı olmadığını doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_FAILED_RETURN(hresult, [isteğe bağlı ileti]) | Belirtilen HRESULT'un başarılı olmadığını doğrular ve makroya geçirilen HRESULT değerini döndürür. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_THROWS(işlem, özel durum, [isteğe bağlı ileti]) | Belirtilen işlemin verilen özel durum türünü oluşturduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_NO_THROW(işlem, (isteğe bağlı ileti)) | Belirtilen işlemin özel durum oluşturmadığını doğrular. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_WIN32_SUCCEEDED(win32Result, [isteğe bağlı ileti]) | Belirtilen Win32 sonucunun başarılı olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_WIN32_SUCCEEDED_RETURN(win32Result, [isteğe bağlı ileti]) | Belirtilen Win32 sonucunun başarılı olduğunu doğrular ve makroya geçirilen LONG değerini döndürür. Ayrıca verilen özel bir iletiyi günlüğe kaydeder. |
| VERIFY_WIN32_FAILED(win32Result, [isteğe bağlı ileti]) | Belirtilen Win32 sonucunun başarısız olduğunu doğrular. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_WIN32_FAILED_RETURN(win32Result, [isteğe bağlı ileti]) | Belirtilen Win32 sonucunun başarısız olduğunu doğrular ve makroya geçirilen LONG değerini döndürür. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_WIN32_BOOL_SUCCEEDED(win32Bool, [isteğe bağlı ileti]) | Belirtilen Win32 BOOL'nin başarılı olduğunu doğrular (!= YANLIŞ). Doğrulama başarısız olursa GetLastError() sonucunu günlüğe kaydeder. Ayrıca, sağlanan özel bir iletiyi günlüğe kaydeder. |
| VERIFY_WIN32_BOOL_SUCCEEDED_RETURN(win32Bool, [isteğe bağlı ileti]) | Belirtilen Win32 BOOL'nin başarılı (!= YANLIŞ) olduğunu doğrular ve makroya geçirilen BOOL'yi döndürür. Doğrulama başarısız olursa GetLastError() sonucunu günlüğe kaydeder. Ayrıca, sağlanan özel bir mesajı günlüğe kaydeder. |
| VERIFY_WIN32_BOOL_FAILED(win32Bool, [isteğe bağlı mesaj]) | Belirtilen Win32 BOOL'nin başarısız olduğunu doğrular (== YANLIŞ). GetLastError() sonucunu günlüğe kaydetmez. Sağlanan özel bir mesaj varsa onu da günlüğe kaydeder. |
| VERIFY_WIN32_BOOL_FAILED_RETURN(win32Bool, [isteğe bağlı ileti]) | Belirtilen Win32 BOOL'nin başarısız olduğunu doğrular (== YANLIŞ) ve makroya geçirilen BOOL'yi döndürür. GetLastError() sonucunu günlüğe kaydetmez. Sağlanmışsa özel bir iletiyi de günlüğe kaydeder. |
Özel Durum Tabanlı Kullanımı Doğrulama
Kaynak kodunuz C++ özel durumları etkin olarak derlenmişse (kaynak dosyasında "/EHsc" komut satırı anahtarını veya "USE_NATIVE_EH=1" makrosunu belirterek), Doğrulama makroları, hata durumunda hatayı günlüğe kaydederek varsayılan olarak yerel bir C++ özel durumu fırlatır. Oluşturulan özel durum bir WEX::TestExecution::VerifyFailureException'dir. Bu özel durumu yakalamak zorunda değilsiniz - TAEF çerçevesi bunu sizin için yakalar ve sonraki test durumuna geçer.
İsteğe bağlı olarak, ilk doğrulama hatasında test iptali yapmak yerine bir dizi doğrulamayı bir satırda gerçekleştirmek isterseniz DisableVerifyExceptions sınıfını kullanabilirsiniz. Nesnenin yaşam süresi, özel durumların devre dışı kalma süresini kontrol eder.
if (NULL != m_key)
{
DisableVerifyExceptions disable;
VERIFY_WIN32_SUCCEEDED(::RegDeleteKey(HKEY_CURRENT_USER, zTempName));
VERIFY_WIN32_SUCCEEDED(::RegCloseKey(m_key));
}
Yukarıdaki örnekte özel durumlar yalnızca "if (NULL != m_key)" bloğu içinde devre dışı bırakılmıştır ve ilk doğrulama çağrısı başarısız olursa ikinci doğrulama çağrısı hala yapılır.
DisableVerifyExceptions sınıfı referans sayısı tutulur ve ayrıca her iş parçacığı düzeyinde çalışır.
İstisna Tabanlı Olmayan Kullanım Doğrulama
Kaynak kodunuz C++ özel durumları etkin durumda değilken derlenmişse, doğrulama makroları doğrulama başarısız olduğunda yerel bir C++ istisnası fırlatmayacaktır. Ayrıca, kaynak kodunuz C++ özel durumları etkin olarak derlenmişse ancak Özel durumları doğrulamayı devre dışı bırakmak istiyorsanız, "WexTestClass.h" eklemeden önce #define NO_VERIFY_EXCEPTIONS yeterlidir.
Bu modelde, C++ özel durumlarına güvenmek yerine test örneğinizin akışını denetlemek için bir dizi iç içe if deyimi gerçekleştirmeniz gerekir.
if (VERIFY_WIN32_SUCCEEDED(::RegDeleteKey(HKEY_CURRENT_USER, zTempName)))
{
...
}
Çıkış Ayarlarını Doğrulama
API'leri Doğrula tarafından üretilen çıkışı özelleştirmek isterseniz SetVerifyOutput sınıfını kullanabilirsiniz. Nesnenin yaşam süresi, çıkış ayarlarının ayarlandığı süreyi denetler. SetVerifyOutput sınıfı referans sayımıyla yönetilir ve her iş parçacığı bazında çalışır.
if (NULL != m_key)
{
SetVerifyOutput verifySettings(VerifyOutputSettings::LogOnlyFailures);
VERIFY_IS_TRUE(true, L"Should NOT log a comment");
VERIFY_IS_TRUE(false, L"Should log an error");
}
VERIFY_IS_TRUE(true, L"Should log a comment");
Yukarıdaki örnekte, belirtilen ayarlar yalnızca "if (NULL != m_key)" bloğu içinde yapılan çağrılarla ilgili ve yalnızca başarısız olan doğrulama çağrısı günlüğe kaydedilir. Ancak üçüncü doğrulama çağrısı başarılı olsa bile günlüğe kaydedilir. Bunun nedeni SetVerifyOutput sınıfının kapsamın dışına çıkmasıdır.
Doğrulama çıktısını ayarlamak için aşağıdaki seçenekler vardır:
VerifyOutputSettings::LogOnlyFailures
Başarısız doğrulama çağrıları günlüğe kaydedilecek; tüm başarılı çağrılar yoksayılacaktır.
Çıkış Ayarlarını Doğrula::HatalarıEngellenmişOlarakKaydet
Başarısızlıkların tümünü hata olarak değil, engellendi şeklinde günlüğe kaydet.
ÇıktıAyarlarınıDoğrula::HatalarıUyarıOlarakKaydet
Hataları hata olarak kaydetmek yerine uyarı olarak günlüğe kaydet.
BaşarıylaKayıtOlduğundaÇıktıAyarlarınıDoğrula
Parametrelerin geçirilmiş değerlerini kaydedin, Verify çağrısı başarılı olsa bile.
Birden fazla ayarı etkinleştirmek için çıkış ayarlarının OR mantığıyla birleştirilebileceğini doğrulayın.
SetVerifyOutput verifySettings(VerifyOutputSettings::LogOnlyFailures | VerifyOutputSettings::LogFailuresAsBlocked);
Özel Türler için Değer Çıkışı Sağlama
C++ Verify çerçevesi, herhangi bir özel tür için ayrıntılı çıkış oluşturma olanağı sağlar. Bunu yapmak için WEX::TestExecution::VerifyOutputTraits sınıf şablonunun uzmanlığını uygulamak gerekir.
WEX::TestExecution::VerifyOutputTraits sınıf şablonu özelleştirmesinin WEX::TestExecution ad alanında mevcut olması gerekir. Ayrıca sınıfınıza başvuru alan ve değerinin dize gösterimini içeren bir WEX::Common::NoThrowString döndüren ToString adlı genel bir statik yöntem sağlaması beklenir.
class MyClass
{
public:
MyClass(int value)
: m_myValue(value)
{
}
int GetValue()
{
return m_myValue;
}
private:
int m_myValue;
}
namespace WEX { namespace TestExecution
{
template <>
class VerifyOutputTraits<MyClass>
{
public:
static WEX::Common::NoThrowString ToString(const MyClass& myClass)
{
return WEX::Common::NoThrowString().Format(L"%d", myClass.GetValue());
}
};
}}
Özel Türler için Karşılaştırıcılar Sağlama
C++ Verify çerçevesi, karşılık gelen işleç aşırı yüklemelerini (işleç=, işleç< vb.) uygulamayan özel türler için karşılaştırıcılar tanımlama olanağı sağlar. Bunu yapmak için WEX::TestExecution::VerifyCompareTraits sınıf şablonunun uzmanlığını uygulamak gerekir.
WEX::TestExecution::VerifyCompareTraits sınıf şablonu özelleştirmesinin WEX::TestExecution ad alanında mevcut olması gerekir. Ayrıca AreEqual, AreSame, IsLessThan, IsGreaterThan ve IsNull adlı genel statik yöntemler sağlaması beklenir.
class MyClass
{
public:
MyClass(int value)
: m_myValue(value)
{
}
int GetValue()
{
return m_myValue;
}
private:
int m_myValue;
}
namespace WEX { namespace TestExecution
{
template <>
class VerifyCompareTraits<MyClass, MyClass>
{
public:
static bool AreEqual(const MyClass& expected, const MyClass& actual)
{
return expected.GetValue() == actual.GetValue();
}
static bool AreSame(const MyClass& expected, const MyClass& actual)
{
return &expected == &actual;
}
static bool IsLessThan(const MyClass& expectedLess, const MyClass& expectedGreater)
{
return (expectedLess.GetValue() < expectedGreater.GetValue());
}
static bool IsGreaterThan(const MyClass& expectedGreater, const MyClass& expectedLess)
{
return (expectedGreater.GetValue() > expectedLess.GetValue());
}
static bool IsNull(const MyClass& object)
{
return object.GetValue() == 0;
}
};
}}
C# İle Doğrulamayı Kullanma
C# Verify kullanımı, C++ ile benzerdir. Ancak WEX.TestExecution.Verify sınıfı, Te.Managed.dll içinde yer alır.
C# testleri için aşağıdaki Verify yöntemleri kullanılabilir:
| Makro | İşlevsellik |
|---|---|
| AreEqual(beklenen nesne, gerçek nesne) | Belirtilen iki nesnenin eşit olduğunu doğrular. |
| AreEqual(nesne bekleniyor, nesne gerçek, dize iletisi) | Belirtilen iki nesnenin eşit olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| AreEqual<T>(T bekleniyor, T gerçek) | Belirtilen iki nesnenin eşit olduğunu doğrular. |
| AreEqual<T>(T beklenen, T mevcut, metin mesajı) | Belirtilen iki nesnenin eşit olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| AreNotEqual(beklenen nesne, gerçek nesne) | Belirtilen iki nesnenin eşit olmadığını doğrular. |
| AreNotEqual(beklenen nesne, gerçek nesne, dize mesajı) | Belirtilen iki nesnenin eşit olmadığını doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| AreNotEqual<T>(T bekleniyor, T gerçek) | Belirtilen iki nesnenin eşit olmadığını doğrular. |
| AreNotEqual<T>(T bekleniyor, T gerçek, dize iletisi) | Belirtilen iki nesnenin eşit olmadığını doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| AreSame(beklenen nesne, gerçek nesne) | Belirtilen iki parametrenin aynı nesneye başvurduğunu doğrular. |
| AreSame(nesne bekleniyor, nesne gerçek, dize iletisi) | Belirtilen iki parametrenin aynı nesneye başvurduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| AreNotSame(nesne bekleniyor, nesne gerçek) | Belirtilen iki parametrenin aynı nesneye başvurmadığını doğrular. |
| AreNotSame(beklenen nesne, gerçek nesne, string mesajı) | Belirtilen iki parametrenin aynı nesneye başvurmadığını doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| IsGreaterThan(IComparable beklenenBüyük, IComparable beklenenKüçük) | İlk parametrenin ikinci parametreden büyük olduğunu doğrular. |
| IsGreaterThan(IComparable expectedGreater, IComparable expectedLess, dize iletisi) | İlk parametrenin ikinci parametreden büyük olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| GreaterOrEqual(IComparable beklenenBüyük, IComparable beklenenKüçük) | İlk parametrenin ikinci parametreden büyük veya buna eşit olduğunu doğrular. |
| IsGreaterThanOrEqual(IComparable expectedGreater, IComparable expectedLess, dize iletisi) | İlk parametrenin ikinci parametreden büyük veya buna eşit olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| IsLessThan(IComparable beklenenKüçük, IComparable beklenenBüyük) | İlk parametrenin ikinci parametreden küçük olduğunu doğrular. |
| IsLessThan(IComparable expectedLess, IComparable expectedGreater, dize iletisi) | İlk parametrenin ikinci parametreden küçük olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| IsKüçükVeyaEşit(IKarşılaştırılabilir beklenenKüçük, IKarşılaştırılabilir beklenenBüyük) | İlk parametrenin ikinci parametreye eşit veya daha küçük olduğunu doğrular. |
| IsLessThanOrEqual(IComparable expectedLess, IComparable expectedGreater, dize iletisi) | İlk parametrenin ikinci parametreden küçük veya buna eşit olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| Fail(metin mesajı) | Hiçbir koşul kontrol edilmeden başarısız olur. |
| IsTrue(bool koşulu) | Belirtilen koşulun doğru olduğunu doğrular. |
| IsTrue(bool koşulu, dize iletisi) | Belirtilen koşulun doğru olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| IsFalse(bool koşulu) | Belirtilen koşulun false olduğunu doğrular. |
| IsFalse(bool koşulu, dize iletisi) | Belirtilen koşulun false olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| IsNull(nesne obj) | Belirtilen parametrenin NULL olduğunu doğrular. |
| IsNull(nesne obj, dize iletisi) | Belirtilen parametrenin NULL olduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| IsNotNull(nesne obj) | Belirtilen parametrenin NULL olmadığını doğrular. |
| IsNotNull(nesne obj, dize iletisi) | Belirtilen parametrenin NULL olmadığını doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
| <T>(VerifyOperation işlemi) atar | Belirtilen işlemin verilen özel durum türünü oluşturduğunu doğrular. Ayrıca, daha fazla inceleme için istisnayı döndürür. |
| <T>(VerifyOperation işlemi, string ileti) fırlatır | Belirtilen işlemin verilen özel durum türünü oluşturduğunu doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. Ayrıca, daha fazla inceleme için istisnayı döndürür. |
| NoThrow(VerifyOperation işlemi) | Belirtilen işlemin özel durum oluşturmadığını doğrular. |
| NoThrow(VerifyOperation işlemi, dize iletisi) | Belirtilen işlemin özel durum oluşturmadığını doğrular; doğrulama başarılı veya başarısız olduğunda özel bir ileti günlüğe kaydeder. |
Özel Durum Tabanlı Kullanımı Doğrulama
C# test durumlarında Doğrulama hataları meydana geldiğinde, bir hata log dosyasına yazılır ve WEX.TestExecution.VerifyFailureException fırlatılır. Yerel C++ modelinde olduğu gibi, bu özel durumları yakalama konusunda endişelenmenize gerek yoktur. TAEF çerçevesi bunu sizin için yakalar ve sonraki test çalışması için devam eder.
İsteğe bağlı olarak, ilk doğrulama hatasında test iptali yapmak yerine bir dizi doğrulamayı bir satırda gerçekleştirmek isterseniz DisableVerifyExceptions sınıfını kullanabilirsiniz. Nesnenin yaşam süresi, özel durumların devre dışı bırakılma süresini belirler. DisableVerifyExceptions sınıfı referans sayımı yapılır ve her iş parçacığı temelinde çalışır.
using (new DisableVerifyExceptions())
{
Verify.AreSame(item1, item2);
Verify.AreEqual(item1, item2);
}
Yukarıdaki örnekte, ilk doğrulama çağrısı başarısız olursa ikinci doğrulama çağrısı hala yapılır.
Alternatif olarak, aşağıda gösterilen örnekte gösterildiği gibi Doğrulama işlemleri öncesinde Verify.DisableVerifyExceptions = true ayarını yaparak da aynı sonucu elde edebilirsiniz.
Verify.DisableVerifyExceptions = true;
try
{
Verify.AreSame(item1, item2);
Verify.AreEqual(item1, item2);
}
finally
{
Verify.DisableVerifyExceptions = false;
}
Bu tür bir seçenek kullanılabilse de DisableVerifyExeptions'ın bir using bloğunda nesne olarak bildirilmesi yine de önerilen seçenektir.
Bir doğrulama hatası oluştuğunda hata ayıklayıcıda durdurmak istiyorsanız özel durumlar iletişim kutusunu açın (Ctrl+Alt+E), Ekle'ye tıklayın, açılan listeden "Ortak Dil Çalışma Zamanı Özel Durumları"nı seçin ve "WEX. Ad alanında TestExecution.VerifyFailureException" yazın.
Çıkış Ayarlarını Doğrulama
API'leri Doğrula tarafından üretilen çıkışı özelleştirmek isterseniz SetVerifyOutput sınıfını kullanabilirsiniz. Nesnenin yaşam süresi, çıkış ayarlarının ayarlandığı süreyi denetler. SetVerifyOutput sınıfı ref olarak sayılır ve iş parçacığı temelinde çalışır.
using (new SetVerifyOutput(VerifyOutputSettings.LogOnlyFailures))
{
Log.Comment("Only the following error should be logged:");
Verify.IsTrue(true, "Should NOT log a comment");
Verify.IsTrue(false, "Should log an error");
}
Verify.IsTrue(true, "Should log a comment");
Yukarıdaki örnekte, yalnızca ikinci doğrulama çağrısının günlüğe kaydedilmesi gerekir çünkü bu, using bloğu içinde başarısız olan tek çağrıdır. Ancak üçüncü doğrulama çağrısı başarılı olsa bile günlüğe kaydedilir. Bunun nedeni SetVerifyOutput sınıfının kapsamın dışına çıkmasıdır.
Alternatif olarak, aşağıda gösterilen örnek gibi Doğrulama işlemlerinden önce Verify.OutputSettings = VerifyOutputSettings.LogOnlyFailures ayarını yaparak da aynı sonucu elde edebilirsiniz.
Verify.OutputSettings = VerifyOutputSettings.LogFailuresAsWarnings
try
{
Verify.AreSame(item1, item2);
Verify.AreEqual(item1, item2);
}
finally
{
Verify.OutputSettings = VerifyOutputSettings.None;
}
Bu tür bir seçenek kullanılabilse de SetVerifyOutput'un bir using bloğunda nesne olarak bildirilmesi yine de önerilen seçenektir.
Doğrulama çıktısını ayarlamak için aşağıdaki seçenekler vardır:
VerifyOutputSettings.LogOnlyFailures
Başarısız olan doğrulama çağrıları kaydedilecek; tüm başarılı çağrılar yoksayılır.
Çıktı Ayarlarını Doğrula.HatalarıEngelliOlarakKaydet
Tüm hataları bir hata olarak günlüğe kaydetmek yerine, engellendi olarak günlüğe kaydet.
VerifyOutputSettings.LogFailuresAsWarnings (Çıktı Ayarlarını Doğrula.Hataları Uyarı Olarak Kaydet)
Tüm başarısızlıkları hata olarak değil, uyarı olarak günlüğe kaydedin.
Çıkış ayarlarının birleştirilip birden çok ayarın etkinleştirilmesi için OR'lanabileceğini doğrulayın.
using (new SetVerifyOutput(VerifyOutputSettings.LogFailuresAsBlocked | VerifyOutputSettings.LogOnlyFailures))
{
...
}
Betikten Doğrula'yı kullanma
Doğrulama API'si, C++ ve C# ile aynı kullanım desenlerini izleyerek betik dilleri için de yüzeye çıkarılır.
Yükleme
Betiklenebilir doğrulama API'lerini bir TAEF test yönteminden kullanırken yükleme gerekmez. Gerekli API'ler 'KayıtSız COM' kullanılarak kaydedilir. TaEF test yönteminin dışından betiklenebilir API'yi kullanmak için (TAEF dışında veya alt işlemde), yükseltilmiş komut isteminden regsvr32 kullanarak Te.Common.dll ikili dosyasını kaydetmeniz yeterlidir; mesela:
regsvr32 Te.Common.dll
Laboratuvar yürütmesi için bir dağıtım dosyası kullanarak TAEF dağıtılırken Te.Common.dll otomatik olarak kaydedilir.
Kullanım
Betiklenebilir Verify API'leri, 'TE.Common.Verify' COM sınıfı aracılığıyla erişilebilir. Sadece bu sınıfın bir örneğini oluşturun ve üzerinde yöntemleri çağırın. Verify sınıfı, yapılan doğrulamaların başarı ve başarısızlık durumlarını günlüğe yazmak için WEXLogger ile otomatik olarak çalışır.
1 <?xml version="1.0" ?>
2 <?component error="false" debug="false"?>
3 <package>
4 <component id="Example">
5 <object id="Log" progid="Wex.Logger.Log" />
6 <object id="Verify" progid="Te.Common.Verify" />
7 <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
8 <reference guid="f8bb9db9-e54e-4555-b3e5-e3ddf2fef401" version="1.0"/>
9
10 <public>
11 <method name="HelloWorld"/>
12 </public>
13
14 <script language="JScript">
15 function HelloWorld() {
16 Verify.IsTrue(true);
17 Verify.IsFalse(false);
18 }
19 </script>
20 </component>
21 </package>
Bu örnek, tek bir 'HelloWorld' yöntemiyle bir TAEF betik test sınıfı tanımlar. 6. satır, genel kapsamda Verify değişkenini tanımlamak için 'object' öğesini kullanır. 8. satır, belirtilen tür kitaplığındaki tüm sabitleri (bu örnekte Te.Common.dlltür kitaplığı) betiğin genel kapsamına eklemek için 'reference' öğesini kullanır; bu durumda 'VerifySettings' sabitlerini ekler. 16. ve 17. satırlar yalnızca Doğrulama API'lerinin kullanımını gösterir. Bu örnek yürütülürken aşağıdaki çıkışı oluşturur:
Test Authoring and Execution Framework v2.7 Build 6.2.7922.0 (fbl_esc_end_dev(mschofie).110202-1000) For x86
StartGroup: Example::HelloWorld
Verify: IsTrue
Verify: IsFalse
EndGroup: Example::HelloWorld [Passed]
Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0
Skriptlenebilir Doğrulama API'si
Betiklenebilir Doğrulama API'sinde doğrulama yöntemleri aşağıdaki gibidir:
| Yöntem | İşlevsellik |
|---|---|
| bool Verify.AreEqual(beklenen, gerçek, [isteğe bağlı mesaj]) | İki değerin eşit olduğunu doğrular. 'VerifySettings_CoerceTypes' ayarı etkinleştirilirse, bu yöntem JScript eşitlik tanımını kullanır; 'VerifySettings_CoerceTypes' ayarı etkinleştirilmediyse, yöntem kimliğin JScript tanımını kullanır. 'VerifySettings_CoerceTypes' varsayılan olarak açıktır. |
| bool Verify.AreNotEqual(beklenen, gerçek değer, [isteğe bağlı ileti]) | İki değerin eşit olmadığını doğrular. 'VerifySettings_CoerceTypes' ayarı etkinleştirilirse, bu yöntem JScript eşitlik tanımını kullanır; 'VerifySettings_CoerceTypes' ayarı etkinleştirilmediyse, yöntem kimliğin JScript tanımını kullanır. 'VerifySettings_CoerceTypes' varsayılan olarak açıktır. |
| bool Verify.IsGreaterThan(expectedGreater, expectedLess, [opsiyonel mesaj]) | İlk değerin ikinci değerden büyük olduğunu doğrular. |
| bool Verify.IsGreaterThanOrEqual(expectedGreater, expectedLess, [isteğe bağlı ileti]) | İlk değerin ikinciden büyük veya buna eşit olduğunu doğrular. |
| bool Verify.IsLessThan(expectedLess, expectedGreater, [isteğe bağlı ileti]) | İlk değerin ikinciden küçük olduğunu doğrular. |
| bool Verify.IsLessThanOrEqual(expectedLess, expectedGreater, [isteğe bağlı ileti]) | İlk değerin ikinci değerden küçük veya buna eşit olduğunu doğrular. |
| bool Verify.AreSame(beklenen, gerçek değer, [isteğe bağlı ileti]) | Değerlerin aynı olduğunu doğrular. |
| bool Verify.AreNotSame(beklenen, mevcut, [isteğe bağlı mesaj]) | Değerlerin aynı olmadığını doğrular. |
| bool Verify.Fail([isteğe bağlı ileti]) | Koşullar kontrol edilmeden başarısız olur. |
| bool Verify.IsTrue(ifade, [isteğe bağlı ileti]) | Verilen ifadenin true olarak değerlendirildiğini doğrular. |
| bool Verify.IsFalse(ifade, [isteğe bağlı ileti]) | Verilen ifadenin false olarak değerlendirildiğini doğrular. |
| bool Verify.IsNull(beklenen, [isteğe bağlı ileti]) | Verilen değerin 'null' olduğunu doğrular. |
| bool Verify.IsNotNull(beklenen, [isteğe bağlı ileti]) | Verilen değerin 'null' olmadığını doğrular. |
| bool Verify.Throws(işlev, [isteğe bağlı ileti]) | Verilen işlevin ve özel durumu oluşturup oluşturmadığını doğrular. |
| bool Verify.NoThrow(işlev, [isteğe bağlı ileti]) | Verilen işlevin özel durum fırlatmadığını doğrular. |
Verify sınıfında ayarları denetlemek için iki yöntem vardır:
| Yöntem | İşlevsellik |
|---|---|
| object Verify.EnableSettings(ayarlar) | Belirtilen ayar bayrağı veya bayraklar etkinleştirilir. |
| nesne Verify.DisableSettings(ayarlar) | Belirtilen ayar bayrağı veya bayraklar devre dışı bırakılır. |
Verify.EnableSettings veya Verify.DisableSettings yöntemlerine geçirilen ayarlar değeri aşağıdaki değerlerden biri olabilir:
VerifySettings_LogOnlyFailures = 0x01
Yalnızca hatalar günlüğe kaydedilir - Başarılı Doğrulama çağrılarında herhangi bir çıktı oluşturulmaz.
VerifySettings_LogFailuresAsBlocked = 0x02
Hatalar varsayılan 'Hata' yerine 'Engellendi' olarak günlüğe kaydedilir.
VerifySettings_LogFailuresAsWarnings = 0x04
Hatalar varsayılan 'Hata' yerine 'Uyarı' olarak günlüğe kaydedilir.
VerifySettings_LogValuesOnSuccess = 0x08
Doğrulanması gereken parametrelerin değerleri, Doğrulama günlüğü mesajının bir parçası olarak yazılır.
Bu varsayılan olarak açıktır.
VerifySettings_CoerceTypes = 0x1000
Verify yöntemlerine geçirilen değerler, JScript zorlama kurallarına göre zorlanır.
Bu varsayılan olarak açıktır.
VerifySettings_DisableExceptions = 0x2000
Doğrulama başarısız olduğunda istisnalar fırlatılmayacak.
Ayarları Doğrula
Doğrulama API'si, davranışını yapılandırmak için ayarlar sağlar. Verify sınıfının koruduğu belirli ayarları etkinleştirmek veya devre dışı bırakmak için 'EnableSettings' ve 'DisableSettings' yöntemleri kullanılabilir. Yöntemler, etkinleştirmek veya devre dışı bırakmak için bir veya daha fazla ayar alır.
Verify.EnableSettings(VerifySettings_LogOnlyFailures);
Bir çağrıda birden çok ayarı etkinleştirmek veya devre dışı bırakmak için birden çok 'VerifySettings' bayrağı ekleyebilirsiniz:
Verify.EnableSettings(VerifySettings_LogOnlyFailures | VerifySettings_DisableExceptions);
EnableSettings ve DisableSettings yöntemleri, özgün ayarları geri yüklemek için kullanılabilecek bir nesne döndürerek belirli bir kapsam için ayarların etkinleştirilmesine veya devre dışı bırakılmasına izin verir;
1 var guard = Verify.EnableSettings(VerifySettings_LogOnlyFailures);
2 try
3 {
4 Verify.AreEqual(10, 0xa);
5 }
6 finally
7 {
8 guard.Restore();
9 }
Bu örnekte, Verify.EnableSettings yöntemi 'VerifySettings_YalnızcaHatalarıKaydet' olarak aktarılır ve Verify nesnesinde zaten mevcut olan ayarlarla birleştirilir. Son blok sırasında özgün ayarları geri yüklemek için 'guard' nesnesinin kullanılabilmesi için bir try-finally bloğu içinde Bir Doğrulama çağrısı yapılır.
Özel Durum Tabanlı Kullanımı Doğrulama
Varsayılan olarak Doğrulama yöntemleri, doğrulama başarısız olduğunda bir özel durum oluşturur. TAEF altında çalıştırılırken, eğer özel durum test yönteminin dışında fırlatılırsa, test başarısız olacaktır. Örneğin:
1 var guard = Verify.EnableSettings(VerifySettings_CoerceTypes);
2 try
3 {
4 Verify.AreEqual(1, "1");
5 Verify.AreEqual("1", 1);
6 }
7 finally
8 {
9 guard.Restore();
10 }
Bu örnekte, ilki bir istisna oluşturacağı için ve testi başarısız bırakacağından, ikinci Verify çağrısı asla yapılmayacaktır. Doğrulama API'sinde ayarlar desteği bu davranışı değiştirmek için kullanılabilir, böylece başarısız doğrulamalar oluşturmaz ve bu da sonraki Doğrulama çağrılarının yapılmasına izin verir. Bu özellikle Bir parametre kümesini doğrulama ve tüm doğrulamaların yazıldığından emin olmak için kullanışlıdır.
1 var guard = Verify.EnableSettings(VerifySettings_CoerceTypes | VerifySettings_DisableExceptions);
2 try
3 {
4 Verify.AreEqual(1, "1");
5 Verify.AreEqual("1", 1);
6 }
7 finally
8 {
9 guard.Restore();
10 }
Özel durumlar devre dışı bırakıldığından, her iki doğrulama da günlüğe yazılır.
TAEF Dışında BetikLenebilir Doğrulama API'sini Kullanma
Betiklenebilir Doğrulama API'sini TAEF dışında kullanabilirsiniz. Yükleme bölümünde belirtildiği gibi Te.Common.dll'ın kayıtlı olduğundan emin olun ve "TE.Common.Verify" sınıfını basit bir şekilde oluşturun.
var VerifySettings_DisableExceptions = 0x2000;
var Verify = new ActiveXObject("TE.Common.Verify");
var Log = new ActiveXObject("WEX.Logger.Log");
Verify.EnableSettings(VerifySettings_DisableExceptions);
Log.StartGroup("Group A");
Verify.AreEqual(1, 2);
Log.EndGroup("Group A");
Log.StartGroup("Group B");
Verify.AreEqual(2, 2);
Log.EndGroup("Group B");
Yukarıdaki kod, cscript aracılığıyla yürütürken aşağıdaki konsol çıkışını oluşturur:
StartGroup: Group A
Error: Verify: AreEqual - Values (1, 2)
EndGroup: Group A [Failed]
StartGroup: Group B
Verify: AreEqual - Values (2, 2)
EndGroup: Group B [Passed]
Non-passing Tests:
Group A [Failed]
Summary: Total=2, Passed=1, Failed=1, Blocked=0, Not Run=0, Skipped=0
'WEX.Logger.Log' API'sini, WEX Logger'ı gerektiği gibi yapılandırmak için kullanılabilir (örneğin, alt işlem olarak) ve betiklenebilir Doğrulama API'si bu yapılandırmadan yararlanacaktır.