اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
شش دقیقه
ادامه آشنایی با NUnit
حالتهای مختلف Assert :
NUnit framework حالتهای مختلفی از دستور Assert را پشتیبانی میکند که در ادامه با آنها آشنا خواهیم شد.
کلاس Assertion :
این کلاس دارای متدهای زیر است:
public static void Assert(bool condition)
public static void Assert(string message, bool condition)
public static void AssertEquals(string message, object expected, object actual)
public static void AssertEquals(string message, float expected, float actual, float delta)
public static void AssertEquals(string message, double expected, double actual, double delta)
public static void AssertEquals(string message, int expected, int actual)
public static void AssertEquals(int expected, int actual)
public static void AssertEquals(object expected, object actual)
public static void AssertEquals(float expected, float actual, float delta)
public static void AssertEquals(double expected, double actual, double delta)
public static void AssertNotNull(string message, object anObject)
public static void AssertNotNull(object anObject)
public static void AssertNull(string message, object anObject)
public static void AssertNull(object anObject)
public static void AssertSame(string message, object expected, object actual)
public static void AssertSame(object expected, object actual)
public static void Fail(string message)
public static void Fail()
نکته:
در یک متد آزمایش واحد شما مجازید به هرتعدادی که لازم است از متدهای Assertion استفاده نمائید. در این حالت اگر تنها یکی از متدهای assertion با شکست روبرو شود، کل متد آزمایش واحد شما مردود گزارش شده و همچنین عبارات بعدی Assertion بررسی نخواهند شد. بنابراین توصیه میشود به ازای هر متد آزمایش واحد، تنها از یک Assertion استفاده نمائید.
مهم!
کلاس Assertion منسوخ شده است و توصیه میشود بجای آن از کلاس Assert استفاده گردد.
آشنایی با کلاس Assert :
این کلاس از متدهای زیر تشکیل شده است:
الف) بررسی حالتهای تساوی
Assert.AreEqual( object expected, object actual );
Assert.AreNotEqual( object expected, object actual );
برای مشاهده انواع و اقسام overload های آنها میتوانید به راهنمای NUnit که پس از نصب، در پوشه doc آن قرار میگیرد مراجعه نمائید.
همچنین دو متد زیر و انواع overload های آنها جهت برسی اختصاصی حالت تساوی دو شیء بکار میروند:
Assert.AreSame( object expected, object actual );
Assert.AreNotSame( object expected, object actual );
Assert.Contains( object anObject, IList collection );
Assert.IsTrue( bool condition );
Assert.IsFalse( bool condition);
Assert.IsNull( object anObject );
Assert.IsNotNull( object anObject );
Assert.IsNaN( double aDouble );
Assert.IsEmpty( string aString );
Assert.IsEmpty( ICollection collection );
Assert.IsNotEmpty( string aString );
Assert.IsNotEmpty( ICollection collection );
ج) بررسی حالتهای مقایسهای
Assert.Greater( double arg1, double arg2 );
Assert.GreaterOrEqual( int arg1, int arg2 );
Assert.Less( int arg1, int arg2 );
Assert.LessOrEqual( int arg1, int arg2 );
از ذکر انواع و اقسام overload های این توابع جهت طولانی نشدن مطلب پرهیز شد.
د) بررسی نوع اشیاء
Assert.IsInstanceOfType( Type expected, object actual );
Assert.IsNotInstanceOfType( Type expected, object actual );
Assert.IsAssignableFrom( Type expected, object actual );
Assert.IsNotAssignableFrom( Type expected, object actual );
ه) متدهای کمکی
Assert.Fail();
Assert.Ignore();
طراحی متدی که بررسی کند آیا یک رشته مورد نظر حاوی عبارتی خاص میباشد یا خیر:
public void AssertStringContains( string expected, string actual,
string message )
{
if ( actual.IndexOf( expected ) < 0 )
Assert.Fail( message );
}
StringAssert.Contains( string expected, string actual );
StringAssert.StartsWith( string expected, string actual );
StringAssert.EndsWith( string expected, string actual );
StringAssert.AreEqualIgnoringCase( string expected, string actual );
StringAssert.IsMatch( string expected, string actual );
ز) بررسی فایلها
FileAssert.AreEqual( Stream expected, Stream actual );
FileAssert.AreEqual( FileInfo expected, FileInfo actual );
FileAssert.AreEqual( string expected, string actual );
FileAssert.AreNotEqual( Stream expected, Stream actual );
FileAssert.AreNotEqual( FileInfo expected, FileInfo actual );
FileAssert.AreNotEqual( string expected, string actual );
ح) بررسی collections
CollectionAssert.AllItemsAreInstancesOfType( IEnumerable collection, Type expectedType );
CollectionAssert.AllItemsAreNotNull( IEnumerable collection );
CollectionAssert.AllItemsAreUnique( IEnumerable collection );
CollectionAssert.AreEqual( IEnumerable expected, IEnumerable actual );
CollectionAssert.AreEquivalent( IEnumerable expected, IEnumerable actual);
CollectionAssert.AreNotEqual( IEnumerable expected, IEnumerable actual );
CollectionAssert.AreNotEquivalent( IEnumerable expected,IEnumerable actual );
CollectionAssert.Contains( IEnumerable expected, object actual );
CollectionAssert.DoesNotContain( IEnumerable expected, object actual );
CollectionAssert.IsSubsetOf( IEnumerable subset, IEnumerable superset );
CollectionAssert.IsNotSubsetOf( IEnumerable subset, IEnumerable superset);
CollectionAssert.IsEmpty( IEnumerable collection );
CollectionAssert.IsNotEmpty( IEnumerable collection );
نکته: در تمامی overload های این توابع، آرگومان message نیز وجود دارد. از این آرگومان زمانیکه آزمایش با شکست مواجه شد، جهت ارائه اطلاعات بیشتری استفاده میگردد.
ادامه دارد...