در این پست از وبسایت پرووید در رابطه با انجام Unit Testing در سی شارپ و .Net Core با MSTest #3 صحبت خواهیم کرد. .NET Core نسل بعدی فریم ورک دات نت است که توسط مایکروسافت معرفی شده است.

در قسمت قبلی از آموزش در رابطه با ساخت اولین test صحبت کردیم.

افزودن قابلیت های دیگر

حال که اولین test برنامه را نوشتیم، می توانیم به سناریوهای دیگری نیز فکر کنیم و test های دیگری نیز پیاده سازی کنیم. برای مثال، برای اعداد اول که پروژه ی ما در مورد آنها می باشد (دقت کنید که کلمه ی انگلیسی Prime Number به معنی عدد اول است.)، موارد دیگری مثل 1 و -1 نیز وجود دارد.

خب ممکن است فکر کنید که سریعاً برای این دو مورد نیز تعدادی test method اضافه کنیم. این کار شدنی است ولی مشکلی که ایجاد می کنید حجم بالای کدهای درون test class مان می باشد. ما می توانیم با قابلیت های فریم ورک MSTest اقدام به نوشتن test هایی کنیم که تا حدودی با هم مشابه هستند ولی پارامترهای ورودی مختلفی دارند.

بسته ی آموزش ویدئویی ساخت برنامه های Cross-Platform با .NET Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی ساخت برنامه های Cross-Platform با .NET Core دیدن کنید.

دو مورد از attribute هایی که در این شرایط می توانیم استفاده کنیم [DataTestMethod] و [DataRow] می باشند. به بیان ساده [DataTestMethod] به منظور نوشتن test method هایی است که یک کد یکسان را test می کنند و [DataRow] به منظور مشخص کردن پارامترهای ورودی آن test method ها می باشد.

پس می توانیم به جای نوشتن test method های اضافه این دو attribute را به یک test تک اعمال کنیم. به این نوع test ها اصطلاحاً data driven test می گوییم. دقت کنید که پیاده سازی همین موضوع با استفاده از فریم ورک xUnit هم پیش از این بر روی وبسایت پرووید منتشر شده است. کدی که در قسمت زیر آمده است را مشاهده کنید.

[DataTestMethod]
[DataRow(-1)]
[DataRow(0)]
[DataRow(1)]
public void ReturnFalseGivenValuesLessThan2(int value)
{
    var result = _primeService.IsPrime(value);

    Assert.IsFalse(result, $"{value} should not be prime");
}

این data driven test سه مقدار یعنی 0 و 1 و -1 را بر روی متد IsPrime تست می کند. به attribute های [DataTestMethod] و [DataRow] دقت کنید. با استفاده از دستور dotnet test اقدام به run کردن این test ها کنید. خواهید دید که دو مورد از این test ها fail می شوند. برای اینکه هر سه test نوشته شده pass شوند کافی دستور if ای که در ابتدای متد IsPrime آمده است را با دستور if (candidate < 2) جایگزین کنید.

بسته ی آموزش ویدئویی .NET Core برای برنامه نویسان ویندوز

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی .NET Core برای برنامه نویسان ویندوز دیدن کنید.

توصیه می کنیم حتماً از بسته ی آموزش ویدئویی Unit Testing در سی شارپ از وبسایت پرووید استفاده کنید. ضمناً، کد کامل مربوط به این آموزش را نیز برای شما در نظر گرفته ایم. امیدواریم که این آموزش از وبسایت پرووید نیز مورد توجه تمامی دوستان عزیر قرار گرفته باشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *