رفتن به مطلب

یک فن فراموش شده


ملیساا

ارسال های توصیه شده

هیچ

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
نمی تواند مدعی باشد که قطعه
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ی که نوشته است درست و بدون مشکل کار می کند، همیشه یک حالت هست که شما آن را در نظر نگرفته اید و همان باعث بروز خطا می شود. پس هیچ گاه نباید
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
درست
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
را به حساب درست بودن آن بگذارید.

خب چاره چیست؟ آزمون های پیاپی توسط افراد متفاوت؟ این عمل در فاز اولیه توسعه هزینه بر است. بهتر است منتظر بمانید تا گروه آزمایش، درستی عملکرد

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
شما را تایید کند. برای گرفتن این تاییدیه آزمایش های واحد (unit
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g) به کمک شما خواهد آمد. آزمایش واحد بیشتر برای تعیین درستی کارکرد یک متد به کار می رود.

آیا هر متدی را می توان در آزمایش واحد گنجاند؟

بی شک نه! چراکه برای هر آزمایش واحد، حد و مرزی وجود دارد و آزمایش باید در آن حد و مرز قرار بگیرد. مثلا متدی که برای وصل شدن به

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
است یا
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
از
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
یا
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
، جزو آزمایش های واحد محس
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
نمی شود. برای مثال اگر یکی از متدهای شما بزرگترین عدد یک فهرست را از
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
دریافت می کند، در متدی که برای آزمایش واحد آن تهیه خواهید کرد نباید هیچ گونه
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ی جهت
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
با
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
نوشته شود.این امر سبب سریع تر اجرا شدن آزمایش های واحد خواهد شد و در آینده شما را از انجام آن به دلیل کند بودن روند انجام آزمایش ها، منصرف نخواهد کرد. همچنین تغییرات انجام شده در لایه
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ها سبب غیرمعتبر شدن این نوع آزمایش ها نخواهد شد. به بیان دیگر وظیفه متد آزمایش واحد، اتصال به
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
یا
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
یا
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
از یک
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
نیست.

چرا

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ها آزمایش های واحد را انجام نمی دهند؟

یکی از دلایل این است که این کار را امری پرهزینه و در مرحله توسعه

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
بی فایده می پندارند، در صورتی که این تفکر اشتباه است. آزمایش واحد به
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ها کمک می کند که از درستی
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
های نوشته شده در همان زمان آگاه شوند و به مرور زمان با حجم عظیمی از
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
های خراب ر
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ه رو نشوند. اگر شما به عنوان
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
برای هر
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ی که می نویسید همان لحظه یک آزمایش واحد هم بنویسید هیچ ضرر زمانی نکرده اید. درست است که آزمایش واحد امری زمان بر است ولی به مرور، این زمان کاهش پیدا می کند. حال بیایید با هم برای یک
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
کوچک یک آزمایش واحد بنویسیم. فرض کنید شما
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ی به صورت زیر نوشته اید:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
sampleforunit
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
{

public sampleforunit

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
() {

students = new list«str

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g»(); }

public list«str

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g» students {get; set;}

public list«str

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g» getnamewithbiglength

(

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
t length) {

list«str

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g» result = new list«str
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g»();

foreach (var student

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
students) {

if (student.length »= length) {

result.add(student); } }

return result; }

}

بسیار خب، ما می خواهیم آزمایش واحدی انجام دهیم که درستی عملکرد getnamewithbiglength را نشان دهد، برای این کار از nunit استفاده می کنیم. nunit چهارچ

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
کاری برای انجام آزمایش های واحد است که تبدیل شده junit (که برای
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
هست) برای
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
است. بعد از
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
nunit یک
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
جدید از نوع
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
library ایجاد کرده و
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
nunit.framework.dll را به
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
خود ارجاع دهید، حال باید
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ی تعریف کنیم که نشان دهنده آزمایش واحد است. در
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
ما صفت
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
fixture باید نشانه گذاری شود. در این
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
باید متدهایی برای آزمایش تعریف کنیم. این متدها باید با صفت
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
و به صورت public تعریف شده باشند که نه مقداری را برگردانند و نه مقداری را به عنوان ورودی دریافت کنند. بسیار خب، با توضیحات بالا
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
آزمایش واحد ما به صورت زیر درخواهد آمد.

[

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
fixture]

public

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
fisrt
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
{

[

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
]

public void

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
gethighlength()

{ ... }

}

در بدنه متد

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
gethighlength باید
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
های مربوط به آزمایش واحد متد getnamewithbiglength نوشته شود. ابتدا یک شیء از
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
sampleforunit
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
می سازیم. سپس مقدار ویژگی students را مقداردهی می کنیم و مقدار برگشتی تابع getnamewithbiglength را با مقداری که باید برگرداند مقایسه می کنیم، اگر مقدار برگشتی درست بود نتیجه می گیریم که متد ما کارش را به درستی انجام می دهد، که
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
آن به صورت زیر خواهد بود:

var sample = new sampleforunit

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
();

sample.students.addrange(new str

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
g[]

{ «

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
», «jamejam», «nunit» });

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
t result = sample.getnamewithbiglength(5).count;

assert.istrue(result == 2);

نکته ای که در

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
بالا وجود دارد متد assert.istrue است که این متد یک شرط را چک می کند. اگر نتیجه حاصل از شرط درست بود مقدار true، و اگر غلط بود مقدار false را به nunit می دهد، مقدار بازگشتی از این متد نشان می دهد که متد شما درست است یا نه؟ حال برای آزمون،
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
nunit
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
را که در پوشه نصب شده nunit است، اجرا کرده و یک
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
جدید بسازید. مسیر
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
را در همان مسیر
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
قبول کنید و اگر مسیر دیگری را انتخاب می کنید توجه داشته باشید که
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
nunit.framework.dll در آن مسیر وجود داشته باشد. پس از ساختن
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
از منوی
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
گزینه add
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
را انتخاب کنید، سپس روی گزینه run
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
کنید. اگر آزمایش واحد شما درست بوده باشد این مورد به شما اطلاع
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
خواهد شد و اگر اشتباه باشد برای هر متد اشتباه، عدد آنها را نیز به
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
نام و خطی که اشتباه است به شما نشان می دهد. این یک مقدمه ساده در مورد آزمایش های واحد بود. اگر فرصتی بود در هفته های آتی دیگر ویژگی های آزمایش واحد را نیز بررسی خواهیم کرد.

  • Like 2
لینک به دیدگاه
×
×
  • اضافه کردن...