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.
- ASP.net
- 3k بازدید
- 0 تشکر