ইউনিট টেস্টিং C# ডেভেলপমেন্টে অত্যন্ত গুরুত্বপূর্ণ। এটি কোডের নির্ভরযোগ্যতা, রি-ইউজেবিলিটি এবং রিফ্যাক্টরিংয়ের সময় আত্মবিশ্বাস বাড়ায়। টেস্ট-ড্রিভেন ডেভেলপমেন্ট (TDD) পদ্ধতিতে প্রথমে টেস্ট কেস লিখে তারপর কোড লিখা হয়।
ইউনিট টেস্ট প্রজেক্ট তৈরি করা (Visual Studio-এ)
- Solution Explorer-এ রাইট-ক্লিক করুন → Add → New Project
- "Unit Test Project" সিলেক্ট করুন (MSTest, NUnit, বা xUnit)
- প্রজেক্টের নাম দিন এবং Create ক্লিক করুন
- নতুন টেস্ট প্রজেক্টে রেফারেন্স যোগ করুন:
Microsoft.VisualStudio.QualityTools.UnitTestFramework(MSTTest-এর জন্য)
MSTest ব্যবহার করে বেসিক টেস্ট উদাহরণ
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MyProject.Tests
{
[TestClass]
public class CalculatorTests
{
[TestMethod]
public void Add_TwoPositiveNumbers_ReturnsCorrectSum()
{
// Arrange
var calculator = new Calculator();
// Act
int result = calculator.Add(2, 3);
// Assert
Assert.AreEqual(5, result);
}
[TestMethod]
[DataRow(0, 0, 0)]
[DataRow(-1, 1, 0)]
[DataRow(100, 200, 300)]
public void Add_VariousInputs_ReturnsExpected(int a, int b, int expected)
{
var calculator = new Calculator();
int result = calculator.Add(a, b);
Assert.AreEqual(expected, result);
}
}
public class Calculator
{
public int Add(int a, int b) => a + b;
}
}
সাধারণ Assert মেথডগুলো
| মেথড | ব্যবহার |
|---|---|
Assert.AreEqual(expected, actual) | দুটি মান সমান কিনা চেক করে |
Assert.AreNotEqual | দুটি মান ভিন্ন কিনা চেক করে |
Assert.IsTrue/IsFalse | বুলিয়ান শর্ত চেক করে |
Assert.IsNull/IsNotNull | নাল চেক করে |
Assert.ThrowsException<T>() | নির্দিষ্ট এক্সেপশন থ্রো হয় কিনা চেক করে |
CollectionAssert.AreEqual | দুটি কালেকশন সমান কিনা চেক করে |
টেস্ট রান করা
- Visual Studio: Test Explorer (Ctrl+E, T) → Run All
- CLI:
dotnet test - CI/CD-এ: পাইপলাইনে
dotnet test --logger trxব্যবহার করুন
TDD চক্র (Red-Green-Refactor)
- Red: ব্যর্থ হওয়া একটি টেস্ট লিখুন
- Green: টেস্ট পাস করার জন্য ন্যূনতম কোড লিখুন
- Refactor: কোড উন্নত করুন, টেস্টগুলো পাস থাকা নিশ্চিত করুন
সাম্প্রতিক ট্রেন্ড: xUnit এবং NUnit
MSTest ছাড়া xUnit.net এবং NUnit জনপ্রিয় অল্টার্নেটিভ। xUnit-.NET Core-এর ডিফল্ট টেস্ট ফ্রেমওয়ার্ক।
xUnit উদাহরণ
using Xunit;
public class CalculatorTests
{
[Fact]
public void Add_TwoNumbers_ReturnsSum()
{
var calc = new Calculator();
Assert.Equal(5, calc.Add(2, 3));
}
[Theory]
[InlineData(1, 2, 3)]
[InlineData(-1, 1, 0)]
public void Add_MultipleCases(int a, int b, int expected)
{
var calc = new Calculator();
Assert.Equal(expected, calc.Add(a, b));
}
}