MSTest এবং NUnit ব্যবহার করে টেস্ট লেখা

Microsoft Technologies - সি শার্প (C#) - ইউনিট টেস্টিং | NCTB BOOK

সি# এ MSTest এবং NUnit হলো জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক, যা ইউনিট টেস্টিংয়ের জন্য ব্যবহার করা হয়। MSTest Microsoft এর অফিসিয়াল টেস্ট ফ্রেমওয়ার্ক, আর NUnit একটি তৃতীয় পক্ষের ফ্রেমওয়ার্ক, যা শক্তিশালী ও সম্প্রসারণযোগ্য টেস্টিং ফিচার প্রদান করে।


MSTest দিয়ে টেস্ট লেখা

ধাপ ১: MSTest টেস্ট প্রজেক্ট তৈরি করা

Visual Studio তে MSTest টেস্ট প্রজেক্ট তৈরি করতে:

  1. Solution Explorer এ প্রজেক্টের উপর রাইট-ক্লিক করুন এবং Add -> New Project নির্বাচন করুন।
  2. MSTest Test Project নির্বাচন করুন।
  3. প্রজেক্টের নাম দিন, উদাহরণস্বরূপ, "MyProject.Tests"।

ধাপ ২: MSTest দিয়ে টেস্ট লিখুন

ধরা যাক, একটি Calculator ক্লাস আছে, যা দুটি সংখ্যা যোগ করে এবং Add মেথডের জন্য একটি টেস্ট লিখবো।

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

MSTest টেস্ট ক্লাস

using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class CalculatorTests
{
    [TestMethod]
    public void Add_ReturnsCorrectResult()
    {
        // Arrange
        var calculator = new Calculator();
        int a = 5;
        int b = 3;
        int expected = 8;

        // Act
        int result = calculator.Add(a, b);

        // Assert
        Assert.AreEqual(expected, result);
    }
}

ব্যাখ্যা

  • [TestClass]: এই অ্যাট্রিবিউট দিয়ে একটি ক্লাসকে টেস্ট ক্লাস হিসেবে চিহ্নিত করা হয়।
  • [TestMethod]: এই অ্যাট্রিবিউট দিয়ে একটি মেথডকে টেস্ট মেথড হিসেবে চিহ্নিত করা হয়।
  • Assert.AreEqual(expected, actual): MSTest এ Assert.AreEqual ব্যবহার করে প্রত্যাশিত এবং প্রাপ্ত মান যাচাই করা হয়।

[DataRow] এবং [DataTestMethod] ব্যবহার করে মাল্টিপল ইনপুট দিয়ে টেস্ট চালানো

MSTest এ [DataTestMethod] এবং [DataRow] ব্যবহার করে বিভিন্ন ইনপুট দিয়ে টেস্ট চালানো যায়।

[TestClass]
public class CalculatorTests
{
    [DataTestMethod]
    [DataRow(5, 3, 8)]
    [DataRow(10, 20, 30)]
    [DataRow(-5, -3, -8)]
    public void Add_ReturnsCorrectResult(int a, int b, int expected)
    {
        // Arrange
        var calculator = new Calculator();

        // Act
        int result = calculator.Add(a, b);

        // Assert
        Assert.AreEqual(expected, result);
    }
}

এখানে [DataRow] ব্যবহার করে বিভিন্ন ইনপুট দিয়ে Add মেথডের ফলাফল যাচাই করা হয়েছে।


NUnit দিয়ে টেস্ট লেখা

ধাপ ১: NUnit টেস্ট প্রজেক্ট তৈরি করা

Visual Studio তে NUnit টেস্ট প্রজেক্ট তৈরি করতে:

  1. Solution Explorer এ প্রজেক্টের উপর রাইট-ক্লিক করুন এবং Add -> New Project নির্বাচন করুন।
  2. NUnit Test Project নির্বাচন করুন।
  3. প্রজেক্টের নাম দিন, উদাহরণস্বরূপ, "MyProject.Tests"।

ধাপ ২: NUnit দিয়ে টেস্ট লিখুন

Calculator ক্লাসের জন্য NUnit ব্যবহার করে টেস্ট লেখার উদাহরণ দেওয়া হলো।

NUnit টেস্ট ক্লাস

using NUnit.Framework;

[TestFixture]
public class CalculatorTests
{
    [Test]
    public void Add_ReturnsCorrectResult()
    {
        // Arrange
        var calculator = new Calculator();
        int a = 5;
        int b = 3;
        int expected = 8;

        // Act
        int result = calculator.Add(a, b);

        // Assert
        Assert.AreEqual(expected, result);
    }
}

ব্যাখ্যা

  • [TestFixture]: এই অ্যাট্রিবিউট দিয়ে একটি ক্লাসকে NUnit টেস্ট ক্লাস হিসেবে চিহ্নিত করা হয়।
  • [Test]: এই অ্যাট্রিবিউট দিয়ে একটি মেথডকে NUnit টেস্ট মেথড হিসেবে চিহ্নিত করা হয়।
  • Assert.AreEqual(expected, actual): NUnit এ Assert.AreEqual ব্যবহার করে প্রত্যাশিত এবং প্রাপ্ত মান যাচাই করা হয়।

[TestCase] ব্যবহার করে মাল্টিপল ইনপুট দিয়ে টেস্ট চালানো

NUnit এ [TestCase] অ্যাট্রিবিউট ব্যবহার করে বিভিন্ন ইনপুট দিয়ে টেস্ট চালানো যায়।

[TestFixture]
public class CalculatorTests
{
    [TestCase(5, 3, 8)]
    [TestCase(10, 20, 30)]
    [TestCase(-5, -3, -8)]
    public void Add_ReturnsCorrectResult(int a, int b, int expected)
    {
        // Arrange
        var calculator = new Calculator();

        // Act
        int result = calculator.Add(a, b);

        // Assert
        Assert.AreEqual(expected, result);
    }
}

এখানে [TestCase] ব্যবহার করে একাধিক ইনপুট দিয়ে Add মেথডের জন্য টেস্ট লেখা হয়েছে।


MSTest এবং NUnit এর Assert মেথড

MSTest এবং NUnit উভয় ফ্রেমওয়ার্কে Assert মেথডের মাধ্যমে টেস্ট ভ্যালিডেশন করা হয়। নিচে কিছু সাধারণ Assert মেথড দেওয়া হলো:

MSTest AssertNUnit Assertকাজ
Assert.AreEqual(a, b)Assert.AreEqual(a, b)দুই মান সমান কিনা যাচাই করা
Assert.AreNotEqual(a, b)Assert.AreNotEqual(a, b)দুই মান সমান নয় কিনা যাচাই করা
Assert.IsTrue(condition)Assert.IsTrue(condition)শর্তটি সত্য কিনা যাচাই করা
Assert.IsFalse(condition)Assert.IsFalse(condition)শর্তটি মিথ্যা কিনা যাচাই করা
Assert.IsNull(object)Assert.IsNull(object)অবজেক্টটি null কিনা যাচাই করা
Assert.IsNotNull(object)Assert.IsNotNull(object)অবজেক্টটি null নয় কিনা যাচাই করা
Assert.Throws<Exception>(Action)Assert.Throws<Exception>(Action)একটি নির্দিষ্ট এক্সেপশন থ্রো হচ্ছে কিনা যাচাই করা

NUnit এ Exception টেস্ট করা

একটি নির্দিষ্ট এক্সেপশন থ্রো হচ্ছে কিনা যাচাই করার জন্য NUnit এ Assert.Throws<Exception> ব্যবহার করা হয়।

[Test]
public void Divide_ThrowsDivideByZeroException()
{
    // Arrange
    var calculator = new Calculator();

    // Act & Assert
    Assert.Throws<DivideByZeroException>(() => calculator.Divide(10, 0));
}

এই টেস্ট যাচাই করবে যে Divide মেথডে শূন্য দ্বারা ভাগ করলে DivideByZeroException থ্রো হচ্ছে কিনা।


সংক্ষেপে MSTest এবং NUnit ব্যবহার করে টেস্টিং

বৈশিষ্ট্যMSTestNUnit
টেস্ট ক্লাস চিহ্নিতকরণ[TestClass][TestFixture]
টেস্ট মেথড চিহ্নিতকরণ[TestMethod][Test]
ডেটা ড্রাইভেন টেস্ট[DataTestMethod], [DataRow][TestCase]
Exception যাচাইAssert.Throws<Exception>(Action)Assert.Throws<Exception>(Action)

MSTest এবং NUnit উভয় ফ্রেমওয়ার্কই C# এ টেস্ট লেখার জন্য শক্তিশালী ও জনপ্রিয়। MSTest Microsoft এর অফিসিয়াল ফ্রেমওয়ার্ক এবং Visual Studio তে বিল্ট-ইন সাপোর্ট করে, আর NUnit অনেক বেশি সম্প্রসারণযোগ্য এবং তৃতীয় পক্ষের প্রোজেক্টে ব্যবহার করা হয়। ইউনিট টেস্টিংয়ের মাধ্যমে কোডের নির্ভুলতা যাচাই করা সহজ হয় এবং বিভিন্ন বাগ বা ত্রুটি শনাক্ত করা সম্ভব হয়।

Content added By
Promotion