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

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

ساختن اولین test

همانطور که در قسمت های قبلی این آموزش گفتیم در روش test-driven development ابتدا اقدام به نوشتن test ای می کنیم که fail می شود، بعد با پیاده سازی logic مورد نظر آن test باعث می شویم که test نوشته شده pass شود و بعد هم بر روی logic ای که پیاده سازی شده است refactoring انجام می دهیم. در حوزه ی unit testing و test-driven development توصیه می کنیم از بسته ی آموزش ویدئویی Unit Testing در سی شارپ در سی شارپ و همچنین بسته ی آموزش ویدئویی Test Driven Development پیشرفته در سی شارپ در سی شارپ استفاده کنید.

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

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

خب، به منظور ساختن اولین test، ابتدا فایل UnitTest1.cs را از فولدر PrimeService.Tests حذف کرده و یک فایل جدید سی شارپ با نام PrimeService_IsPrimeShould.cs ایجاد کرده و کد زیر را در آن قرار دهید.

using NUnit.Framework;
using Prime.Services;

namespace Prime.UnitTests.Services
{
    [TestFixture]
    public class PrimeService_IsPrimeShould
    {
        private readonly PrimeService _primeService;

        public PrimeService_IsPrimeShould()
        {
            _primeService = new PrimeService();
        }

        [Test]
        public void ReturnFalseGivenValueOf1()
        {
            var result = _primeService.IsPrime(1);

            Assert.IsFalse(result, "1 should not be prime");
        }
    }
}

همانطور که در این فایل مشاهده می کنید یک attribute با نام [TestFixture] بر روی کلاس اضافه شده است که مشخص می کند که این فایل حاوی unit test هایی می باشد. علاوه بر این، یک attribute دیگر با نام [Test] بر روی هر متد که در نقش یک test method می باشد اضافه شده است. توصیه می کنیم که از بسته ی آموزش ویدئویی Unit Testing در سی شارپ وبسایت پرووید که در آن از فریم ورک nUnit استفاده کرده ایم استفاده کنید.

در ادامه فایل را save کنید و با استفاده از دستور dotnet test اقدام به build کردن test ها و همچنین class library کنید و test ها را run کنید. باید بدانید که test runner مربوط به NUnit حاوی entry point یا همان نقطه ی ورود برنامه برای run کردن test ها می باشد. دستور dotnet test باعث اجرا شدن test runner با استفاده از پروژه ی unit test ای می شود که تا به اینجا ایجاد کرده اید.

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

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

بدون شک در این قسمت test شما fail می شود ولی نگران نباشید. سیکلی که در قسمت های قبلی این آموزش از آن صحبت کردیم را به یاد بیاورید: Red-Green-Refactor. ما تا به اینجا قسمت اول را انجام داده ایم. یعنی test ای را نوشته ایم که fail می شود. هم اکنون زمان مرحله ی دوم یعنی Green می باشد. به عبارت دیگر، پیاده سازی logic مورد نظری که باعث pass شدن test ی شود که در حال حاضر fail می شود. در رابطه با این سیکل و بسیاری موارد دیگر در بسته ی آموزش ویدئویی Unit Testing در سی شارپ وبسایت پرووید به صورت کامل صحبت کرده ایم.

خب، به منظور pass شدن test مورد نظر logic زیر را برای متد IsPrime از پروژه ی PrimeService لحاظ کنید.

public bool IsPrime(int candidate)
{
    if (candidate == 1)
    {
        return false;
    }
    throw new NotImplementedException("Please create a test first");
}

پس از این در فولدر unit-testing-using-nunit، با استفاده از دستور dotnet test اقدام به build کردن پروژه ی PrimeService و سپس PrimeService.Tests کنید. پس از build شدن پروژه ها، اولین و تنهاترین test ما تا به اینجا اجرا شده و pass می شود. پس توانستیم مرحله ی دوم از آن سیکل سه مرحله ای یعنی Green را نیز انجام دهیم.

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

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

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

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