NUnit چیست؟
یکی از قدیمیترین و پرکاربردترین فریمورکهای تست در داتنت، با Attributeهای [Test] و [TestCase] و مجموعه غنی Assert.
چرا مهم است؟
NUnit در بسیاری از پروژههای قدیمیتر و سازمانی داتنت هنوز استاندارد است و مجموعه Assert آن (Assert.That با Constraint Model) خوانایی بالایی دارد.
تعریف
NUnit یکی از قدیمیترین فریمورکهای تست داتنت (الهامگرفته از JUnit) است که با [TestFixture] روی کلاس و [Test] روی متد، تست را مشخص میکند.
مثال
[TestFixture]
public class DiscountCalculatorTests
{
[TestCase(100, 10)]
[TestCase(50, 5)]
public void Calculate_ReturnsTenPercentOff(decimal price, decimal expected)
{
var calculator = new DiscountCalculator();
var result = calculator.Calculate(price);
Assert.That(result, Is.EqualTo(expected));
}
}
Setup/Teardown
[SetUp]
public void Setup() { /* قبل از هر تست */ }
[TearDown]
public void TearDown() { /* بعد از هر تست */ }
تفاوت کلیدی با xUnit
NUnit بهصورت پیشفرض یک نمونه از کلاس تست را بین تستها به اشتراک میگذارد (مگر [Parallelizable] تنظیم شود) و Setup/Teardown را با Attribute جداگانه مینویسد؛ xUnit برای هر تست نمونه جدید میسازد و Setup را در سازنده مینویسد.
اشتباه رایج
❌ استفاده از Assert.AreEqual قدیمی بهجای مدل جدیدتر و خواناتر Assert.That(x, Is.EqualTo(y)).
منبع و مطالعه بیشتر
خلاصه
NUnit با [TestFixture]/[Test]/[TestCase] کار میکند و برخلاف xUnit، پیشفرض یک نمونه کلاس را بین تستها به اشتراک میگذارد. مدل جدید Assert.That(x, Is.EqualTo(y)) را به Assert.AreEqual قدیمی ترجیح دهید. مرجع کامل: مستندات رسمی NUnit.
