ادامه آشنايي با 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 نيز وجود دارد. از اين آرگومان زمانيكه آزمايش با شكست مواجه شد، جهت ارائه اطلاعات بيشتري استفاده ميگردد.
ادامه دارد...