Automated Testing অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ, যা কোডের কার্যকারিতা নিশ্চিত করতে সাহায্য করে। NUnit এবং xUnit হল .NET প্ল্যাটফর্মে সবচেয়ে জনপ্রিয় এবং widely used testing frameworks। এই frameworks গুলি ইউনিট টেস্টিং (unit testing), ইনটিগ্রেশন টেস্টিং (integration testing), এবং অন্যান্য পরীক্ষার জন্য ব্যবহৃত হয়। এখানে আমরা NUnit এবং xUnit দিয়ে Automated Testing কিভাবে করা যায় তা নিয়ে আলোচনা করব।
১. NUnit Testing Framework
NUnit একটি ওপেন সোর্স, পপুলার টেস্টিং ফ্রেমওয়ার্ক যা C# এবং .NET ফ্রেমওয়ার্কের জন্য তৈরি করা হয়েছে। NUnit ডেভেলপারদের একাধিক টেস্ট কেস তৈরি করতে এবং টেস্ট ফাংশনালিটিগুলি স্বয়ংক্রিয়ভাবে যাচাই করতে সহায়তা করে।
NUnit Installation:
- Visual Studio থেকে NuGet Package Manager ব্যবহার করে NUnit ইনস্টল করা যায়।
NUnitএবংNUnit3TestAdapterইনস্টল করুন।
Install-Package NUnit
Install-Package NUnit3TestAdapter
Install-Package Microsoft.NET.Test.Sdk
NUnit Example:
using NUnit.Framework;
namespace MyApp.Tests
{
public class CalculatorTests
{
[Test] // This attribute marks the method as a test method
public void Add_TwoNumbers_ReturnsCorrectSum()
{
// Arrange
var calculator = new Calculator();
// Act
var result = calculator.Add(2, 3);
// Assert
Assert.AreEqual(5, result); // Verifying if the result is 5
}
}
}
এখানে:
- [Test]: টেস্ট মেথডকে চিহ্নিত করতে ব্যবহৃত।
- Assert.AreEqual(): পরীক্ষার ফলাফল যাচাই করার জন্য ব্যবহৃত হয়, এখানে প্রত্যাশিত ফলাফল (5) এবং প্রাপ্ত ফলাফল (result) এর মিল যাচাই করা হয়।
NUnit Features:
- [Test] অ্যাট্রিবিউট দিয়ে টেস্ট মেথড চিহ্নিত করা হয়।
- [SetUp] এবং [TearDown] অ্যাট্রিবিউট দিয়ে টেস্টের আগে এবং পরে কিছু কোড চালানো যায়।
- [TestCase] অ্যাট্রিবিউট দিয়ে বিভিন্ন ইনপুট দিয়ে একই টেস্ট রান করা যায়।
২. xUnit Testing Framework
xUnit হল আরও আধুনিক এবং শক্তিশালী একটি টেস্টিং ফ্রেমওয়ার্ক যা .NET অ্যাপ্লিকেশনের জন্য নির্মিত। এটি NUnit এর তুলনায় কিছুটা পারফরম্যান্সে উন্নত এবং মডুলার ডিজাইন সমর্থন করে।
xUnit Installation:
- Visual Studio থেকে NuGet Package Manager ব্যবহার করে xUnit ইনস্টল করুন।
xUnitএবংxunit.runner.visualstudioইনস্টল করুন।
Install-Package xunit
Install-Package xunit.runner.visualstudio
xUnit Example:
using Xunit;
namespace MyApp.Tests
{
public class CalculatorTests
{
[Fact] // This attribute marks the method as a test
public void Add_TwoNumbers_ReturnsCorrectSum()
{
// Arrange
var calculator = new Calculator();
// Act
var result = calculator.Add(2, 3);
// Assert
Assert.Equal(5, result); // Verifying if the result is 5
}
}
}
এখানে:
- [Fact]: xUnit এ [Fact] অ্যাট্রিবিউট দ্বারা একটি টেস্ট মেথড চিহ্নিত করা হয়।
- Assert.Equal(): পরীক্ষার ফলাফল যাচাই করার জন্য ব্যবহৃত হয়, যেখানে প্রত্যাশিত ফলাফল (5) এবং প্রাপ্ত ফলাফল (result) যাচাই করা হয়।
xUnit Features:
- [Fact]: একটি সাধারণ টেস্ট মেথডের জন্য ব্যবহৃত হয়।
- [Theory]: একাধিক ইনপুট প্রদান করতে পারে এবং একই টেস্ট মেথডের জন্য বিভিন্ন আর্গুমেন্ট দিয়ে টেস্ট চালাতে সাহায্য করে।
- Constructor Injection: Test classes এ constructor injection এর মাধ্যমে ডিপেনডেন্সি ইনজেকশন (DI) এর সুবিধা প্রদান করে।
৩. Comparison between NUnit and xUnit
| Feature | NUnit | xUnit |
|---|---|---|
| Test Attributes | [Test], [TestCase] | [Fact], [Theory] |
| Setup and Teardown | [SetUp], [TearDown] | Constructor/IDisposable |
| Parameterization | [TestCase] | [Theory], InlineData |
| Test Runner | NUnitTestAdapter | xunit.runner.visualstudio |
| Asserts | Assert.AreEqual(), Assert.IsTrue() | Assert.Equal(), Assert.True() |
| Parallel Execution | Supports parallel execution | Supports parallel execution |
৪. Running Tests in Visual Studio
- Test Explorer:
- Visual Studio তে, Test Explorer উইন্ডোটি ব্যবহার করে NUnit বা xUnit টেস্ট চালানো যায়।
- Build করুন এবং তারপর Test Explorer তে টেস্টগুলির অবস্থান দেখুন।
- Command Line:
.NET CLI ব্যবহার করে টেস্ট রান করা যায়:
dotnet test
- Continuous Integration (CI):
- Azure DevOps বা GitHub Actions ব্যবহার করে CI/CD সেটআপ করতে পারেন, যেখানে টেস্টগুলি স্বয়ংক্রিয়ভাবে রান হবে।
৫. Mocking with Moq (Mocking Framework)
Mocking হল টেস্টিং প্রক্রিয়ায় অত্যন্ত গুরুত্বপূর্ণ, যেখানে আপনি নির্দিষ্ট অবজেক্টগুলির আচরণ (behavior) জেনেরেট করতে পারেন যাতে নির্ভরশীলতা কমিয়ে টেস্টের নির্ভরযোগ্যতা বাড়ে।
Moq Example:
using Moq;
using Xunit;
public interface ICalculator
{
int Add(int a, int b);
}
public class CalculatorTests
{
[Fact]
public void Add_TwoNumbers_ReturnsCorrectSum()
{
// Arrange
var mockCalculator = new Mock<ICalculator>();
mockCalculator.Setup(c => c.Add(2, 3)).Returns(5);
// Act
var result = mockCalculator.Object.Add(2, 3);
// Assert
Assert.Equal(5, result); // Verifying if the result is 5
}
}
এখানে, Moq ব্যবহার করে ICalculator এর Add মেথড মক করা হয়েছে।
সারাংশ:
- NUnit এবং xUnit হল জনপ্রিয় টেস্টিং ফ্রেমওয়ার্কস যা .NET অ্যাপ্লিকেশনে ইউনিট টেস্টিং এর জন্য ব্যবহৃত হয়।
- NUnit-এ
[Test],[TestCase]এবং xUnit-এ[Fact],[Theory]টেস্ট ফিচার রয়েছে। - Mocking টেস্টিংয়ে গুরুত্বপূর্ণ ভূমিকা পালন করে, যেখানে আপনি নির্ভরশীল অবজেক্টগুলিকে মক করতে পারেন।
- Continuous Integration (CI) সেটআপ করার মাধ্যমে স্বয়ংক্রিয় টেস্ট রান করা যায়।
- Visual Studio বা CLI তে টেস্ট চালানো সম্ভব এবং টেস্ট ফলাফল টেস্ট এক্সপ্লোরার মাধ্যমে দেখা যায়।
এটি ইউনিট টেস্টিং এবং অটোমেটেড টেস্টিং করার জন্য অত্যন্ত গুরুত্বপূর্ণ এবং একটি ভাল প্র্যাকটিস হল কোডের প্রতিটি অংশের টেস্ট করা, যাতে কোডের কার্যকারিতা নিশ্চিত থাকে।
Read more