آزمون واحد در NET Core. با استفاده از NUnit

این آموزش شما را با انجام گام به گام یک مثال با مفاهیم آزمون واحد بیشتر آشنا می کند.
پیش نیازها
- NET Core 2.1 SDK یا ورژن های بالاتر
- یک کد ادیتور برای مثال VsCode.
ایجاد پروژه جدید
یک پوشه جدید با نام unit-testing-using-nunit ایجاد کنید و از دستور زیر برای ایجاد یک سولوشن جدید برای نگهداری پروژه تست و پروژه کد ایجاد کنید.
dotnet new sln
سپس یک پوشه جدید با نام PrimeService ایجاد کنید، پوشه بندی های به صورت زیر خواهند بود
/unit-testing-using-nunit
unit-testing-using-nunit.sln
/PrimeService
dotnet new classlib
در داخل پوشه PrimeService فایل class 1 به PrimeService.cs تغییر نام دهید و سپس با دستور زیر پروژه را به سولوشن اضافه کنید.
dotnet sln add PrimeService/PrimeService.csproj
دفت داشته باشید دستور بالا را باید از داخل پوشه ریشه سولوشن اجرا کنید.
ایجاد پروژه تست
سپس پوشه جدیدی با نام PrimeService.Tests برای ایحاد پروژه تست ایجاد کنید.
پس از ایجاد پوشه ه داخل پوشه PrimeService.Test رفته و دستور زیر را اجرا کنید.
dotnet new nunit
به دلیل وابستگی پروژه تست به پروژه کد ،پروژه کد را از طریق دستور زیر به پروژه تست اضافه کنید.
dotnet add reference ../PrimeService/PrimeService.csproj
در ادامه به پوشه ریشه رفته و با دستور زیر پروژه تست را به سولوشن اضافه کنید.
dotnet sln add ./PrimeService.Tests/PrimeService.Tests.csproj
ایجاد اولین تست توسط NUnit
در فهرست PrimeService.Tests ، پرونده UnitTest1.cs را به PrimeService_IsPrimeShould.cs تغییر نام دهید و کل محتوای آن را با کد زیر جایگزین کنید:
using NUnit.Framework;
using Prime.Services;
namespace Prime.UnitTests.Services
{
[TestFixture]
public class PrimeService_IsPrimeShould
{
private PrimeService _primeService;
[SetUp] public void SetUp()
{
_primeService = new PrimeService();
}
[Test] public void IsPrime_InputIs1_ReturnFalse()
{
var result = _primeService.IsPrime(1);
Assert.IsFalse(result, "1 should not be prime");
}
}
}
تابع تستی را نوشتید که یک تابع به اسم IsPrime از داخل کلاس PrimeService را که یک پارامتر ورودی عددی میگیرد فراخوانی میکند.
ویژگی [TestFixture] یک کلاس را نشان می دهد که شامل تست های واحد است. ویژگی [Test] نشان می دهد تابع یک تابع آزمایشی است.
در آزمایش بالا مشخص شده است که با ورود عدد 1 به تابع IsPrime خروجی تابع می بایست False باشد.بعد از اینکه تابع تست نوشته شد ، کد تابع می بایست نوشته شود پس بیایید و تابع زیر را که فقط یک کد ساده برای تشخیص اینکه عدد 1 ، عدد اول نمی باشد را به کلاس PrimeService اضافه کنید.
اکنون به پوشه ای که فایل سولوشن شما در آنجا قرار دارد رفته و در دستور dotnet test را اجرا کنید، ابتدا پروژه کد شما اجرا می شود و بعد از پروژه تست و بعد از آن نتیجه تابع تست شما چاپ می شود.
همانطور که در مطلب قبلی که مربوط به آزمون های واحد با استفاده از xUnit بود توضیح داده شد می توانید مقادیر مختلفی را به تابع تست ارسال کنید، برای این کار در NUnit از TestCase استفاده می شود. به کد زیر توجه کنید.
[TestCase(-1)]
[TestCase(0)]
[TestCase(1)]
public void IsPrime_ValuesLessThan2_ReturnFalse(int value)
{
var result = _primeService.IsPrime(value);
Assert.IsFalse(result, $"{value} should not be prime");
}
با اجرا دوباره dotnet test اینبار آزمون جدید شما پاس نمی شود برای پاس شدن آزمون می بایست شرط داخل تابع IsPrime را به صورت زیر تغییر دهید.
if (number < 2)
توجه داشته باشید که کد شما با فرستادن پارامتر های مختلف تکمیل خواهد شد می توانید این تمرین را تا زمانی که تابع IsPrime کامل شود ادامه دهید ، البته در مطالب بعدی این کار را با همدیگر انجام خواهیم داد.
کد کامل این درس در مخزن گیت هاب
منابع
دیدگاهتان را بنویسید