Unit Test Framework در Visual Studio

شنبه 27 تیر 1394

در این مقاله Unit Test Framework در Microsoft Visual Studio و NET. ارائه می گردد .

امروزه فرآیند توسعه نرم افزار ،نقشی حیاتی دارد .اگر چه انواع مختلفی از آزمایش توسط تیم انجام شده است ، از دید برنامه نویسان Unit Testing حیاتی است و به برنامه نویسان اجازه نوشتن کدهای بدون خطا را می دهد .

Microsoft Visual Studio و NET. دارای Unit Test framework هستند که از NUnit و دیگر Testing Framework های خودکار جدا هستند .

تعریف SUT

SUT اختصار یافته System Under Test می باشد . اکنون می خواهیم برخی پروژه های منطقی را برای نرم افزار که محاسبات ریاضی را براساس ورودی کاربر انجام می دهد و توسط MathLibrary.dll در دسترس است را گسترش دهیم . بنابراین پروژه منطقی ما "System Under Test " از دید Unit Test است .

کد های عناصر  پروژه MathLibrary به این صورت هستند :

    using System;  
    namespace MathLibrary   
    {  
        public class MathClass   
        {  
            public int Sum(int n1, int n2)   
            {  
                if (n1 <= 0 && n2 <= 0)   
                {  
                    throw new ArgumentException("No Zero or Negative are allowed");  
                }   
                else   
                {  
                    return n1 + n2;  
                }  
            }  
        }  
    }

 

از آنجایی که ، یک عنصر کتابخانه می باشد ، پوشش آزمایشی برای اطمینان از عملکرد پروژه بسیار حیاتی است .

برای انجام این کار ، بجای انجام تست دستی توسط نمای کاربری که برای آزمایش درستی پروژه دشوار و خسته کننده خواهد بود ، می توانیم بطور خودکار این فرآیند را تست کنیم .

همانطور که مشاهده می کنید ، تابع Sum را ( دز MathLibrary.dll ) در یک Test Driven style نوشته ایم. به عبارت دیگر ، پارامترهای ارسال شده برای تست های ممکن  اعتبارسنجی می شوند .

1 . اگر آرگومان مثبت و غیر صفر باشد ،مجموع آرومان های ارسال شده باز می گردد .

2 . اگر آرگومان ارسال شده 0 (صفر) باشد ، یک دستور ارسال می شود .

3 . اگر آرگومان ارسال شده منفی باشد ،یک دستور اجرا می شود .

نحوه بررسی و آزمایش خودکار

اگر به اینکه ابزار Unit Test و فناوری توسعه استفاده می کنید توجه نکنید، فرایند تست به دو مورد زیر بستگی دارد .

1 . سطح انتظار کاربر : قبل از اینکه تستی را انجام دهیم ، باید بدانیم چه انتظاری برای موفقیت داریم، برای مثال در تابع sum دقیقا جمع دوعدد صحیح را می خواهیم .

2 . نتیجه : زمانی که تست را انجام می دهید نتیجه تست به دست می آید .

برای انجام این کار ، از Microsoft Visual Studio 2008 یا 2010 استفاده کنید . یک پروژه جدید ایجاد کنید.

پس از اینکه این پروژه بارگذاری شد ، یک فایل با  نام UnitTest1.cs وجود دارد ،

به منظور خودکار سازی Test Case ها در Microsoft Visual Studio با استفاده از Unit Testing Framework،نیاز به درک چند مورد داریم :

1 . Test Automation Framework : مایکروسافت دارای Unit Testing Framework اجرا شده در یک فضای نام که Microsoft.VisualStudio.TestTools.UnitTesting است ، می باشد .

2 . ویژگی [TestMethod] : این ویژگی است که می بایست در هر متد که یک TestCase را ارائه می دهد ، نمایش داده شود .

3. Assert class : این کلاس بخشی از Microsoft's Unit Testing framework می باشد و از این کلاس برای تایید یکسان بودن موارد انتظار و نتیجه استفاده می شود .

می بایست 4 Test Case را برای تابع sum در MathLibrary.dll پوشش دهیم .

Test Case#1 : برای تایید اگر مقدار ارسال شده عددی باشد نتیجه صحیحی بازگردانده می شود .

    [TestMethod]  
    public void TestSumResultAreEqual()   
    {  
        MathLibrary.MathClass objMath = new MathClass();  
        Assert < > .AreEqual(24, objMath.Sum(12, 12));  
    }

 Test Case#2 : برای تایید اگر مقدار ارسال شده عددی باشد نتیجه صحیحی بازگردانده نمی شود.

    [TestMethod]  
    public void TestSumResultAreNotEqual()   
    {  
        MathLibrary.MathClass objMath = new MathClass();  
        Assert.AreNotEqual(25, objMath.Sum(12, 12));  
    }

Test Case#3 : برای تایید اگر مقدارصحیح ارسال شده صفر باشد .

    [TestMethod]  
    public void TestSumThrowExceptionWhenZero()   
    {  
        MathLibrary.MathClass objMath = new MathClass();  
        try   
        {  
            objMath.Sum(0, 0);  
        }   
        catch (ArgumentException)   
        {  
            // logging code will go here  
        }  
    }

Test Case#4 : برای تایید اگر مقدارصحیح ارسال شده منفی باشد .

    [TestMethod]  
    public void TestSumThrowExceptionWhenNegative()  
    {  
        MathLibrary.MathClass objMath = new MathClass();  
        try   
        {  
            objMath.Sum(-123, -456);  
        }   
        catch (ArgumentException)   
        {  
            // logging code will go here  
        }  
    }  

 

استفاده از محیط برنامه نویسی Visual Studio

پروژه ای در Visual Studio ایجاد کرده و آن را اجرا کنید . در آغاز اجرا همه TestMethods ها را مشاهده خواهید کرد . نتیجه به این صورت می باشد :

استفاده از command prompt در Visual Studio

command prompt در Visual Studio را بازکنید و به پوشه ای که TestProjectName.dll در آن قرار دارد بروید و این دستور را اجرا کنید:

mstest /testcontainer:TestProjectName.dll.

 

قربانی

نویسنده 44 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید