CodeShot
Unit Testing2 دقیقه مطالعه

تست واحد (Unit Testing) چیست؟

تست واحد رفتار یک متد یا کلاس را به‌صورت مجزا از وابستگی‌های بیرونی (دیتابیس، شبکه) بررسی می‌کند.

چرا مهم است؟

تقریباً همهٔ آگهی‌های Mid/Senior .NET آشنایی با xUnit/NUnit/Moq را می‌خواهند؛ کد بدون تست، رفکتور کردنش پرریسک است.

ساختار AAA

[Fact]
public void Add_TwoNumbers_ReturnsSum()
{
    // Arrange
    var calculator = new Calculator();

    // Act
    var result = calculator.Add(2, 3);

    // Assert
    Assert.Equal(5, result);
}

Mock کردن وابستگی‌ها با Moq

var repoMock = new Mock<IOrderRepository>();
repoMock.Setup(r => r.GetById(1)).Returns(new Order { Id = 1 });

var service = new OrderService(repoMock.Object);
var order = service.GetOrder(1);

Assert.Equal(1, order.Id);

فریمورک‌های رایج در .NET

  • xUnit: پرکاربردترین فریمورک در پروژه‌های جدید .NET.
  • NUnit: قدیمی‌تر، همچنان پرکاربرد در پروژه‌های قدیمی‌تر.
  • MSTest: فریمورک رسمی مایکروسافت.

اشتباه رایج

❌ تست نوشتن برای جزئیات پیاده‌سازی داخلی (متدهای Private) به‌جای رفتار بیرونی. ✅ تست باید روی «ورودی → خروجی/رفتار قابل‌مشاهده» تمرکز کند تا با تغییر پیاده‌سازی داخلی نشکند.

خلاصه

تست واحد رفتار یک متد را مجزا از وابستگی‌ها بررسی می‌کند؛ الگوی AAA (Arrange-Act-Assert) ساختار استاندارد است؛ Moq برای شبیه‌سازی وابستگی‌ها استفاده می‌شود.

حالا امتحان کن

🧩آزمون مبانی تست واحد4 سؤال · نمره قبولی 60٪
این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←