Unit testing হল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ যা কোডের নির্ভরযোগ্যতা এবং সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়। F# এবং C# এ, xUnit এবং NUnit দুটি জনপ্রিয় unit testing frameworks যা ডেভেলপারদের কোডের ছোট অংশ (unit) পরীক্ষা করার জন্য সহায়তা করে। এই ফ্রেমওয়ার্কগুলি অটোমেটেড টেস্টিং, ডিবাগিং এবং কোডের মান উন্নত করতে ব্যবহৃত হয়।
xUnit .NET এর একটি নতুন এবং জনপ্রিয় unit testing framework যা অনেক ক্ষেত্রে NUnit এবং MSTest এর চেয়ে সহজ এবং কার্যকরী। এটি প্রোগ্রামিং ভাষা হিসেবে C# এবং F# সমর্থন করে।
IClassFixture
এবং ICollectionFixture
ইন্টারফেস সরবরাহ করে।open Xunit
// SUT (System Under Test) ফাংশন
let add x y = x + y
// টেস্ট ক্লাস
type MathTests() =
// Test method with Fact attribute
[<Fact>]
member this.TestAdd() =
let result = add 2 3
Assert.Equal(5, result)
// Test method with Theory attribute
[<Theory>]
[<InlineData(2, 3, 5)>]
[<InlineData(10, 20, 30)>]
member this.TestAddTheory(x, y, expected) =
let result = add x y
Assert.Equal(expected, result)
এখানে, [<Fact>]
একটি সাধারণ টেস্ট প্রদর্শন করে যা add
ফাংশনটির সঠিকতা পরীক্ষা করে। এবং [<Theory>]
টেস্টে বিভিন্ন ইনপুট ডেটার জন্য পরীক্ষার কাজ করা হচ্ছে।
NUnit .NET ফ্রেমওয়ার্কের জন্য একটি আরেকটি জনপ্রিয় unit testing framework যা বেশ কিছু বছর ধরে ব্যবহৃত হচ্ছে। NUnit টেস্টিংয়ের জন্য ফাংশনাল এবং আর্কিটেকচারাল সুবিধা প্রদান করে।
Assert.AreEqual()
, Assert.IsTrue()
, Assert.IsNull()
, ইত্যাদি।open NUnit.Framework
// SUT (System Under Test) ফাংশন
let add x y = x + y
// TestFixture ক্লাস
[<TestFixture>]
type MathTests() =
// Test method with Test attribute
[<Test>]
member this.TestAdd() =
let result = add 2 3
Assert.AreEqual(5, result)
// Test method with TestCase attribute
[<TestCase(2, 3, ExpectedResult = 5)>]
[<TestCase(10, 20, ExpectedResult = 30)>]
member this.TestAddWithParameters(x, y) =
add x y
এখানে, [<Test>]
টেস্ট মেথডটি add
ফাংশনটির সঠিকতা যাচাই করছে। [<TestCase>]
অ্যাট্রিবিউটের মাধ্যমে বিভিন্ন ইনপুট দিয়ে টেস্টিং করা হচ্ছে।
বৈশিষ্ট্য | xUnit | NUnit |
---|---|---|
Attribute | [<Fact>] , [<Theory>] | [<Test>] , [<TestCase>] , [<SetUp>] |
Parallel Test Execution | সাপোর্ট করে | সাপোর্ট করে, তবে সীমিত |
Test Lifecycle Hooks | IClassFixture , ICollectionFixture | [<SetUp>] , [<TearDown>] |
ফাংশনাল সাপোর্ট | ফাংশনাল প্রোগ্রামিং জন্য আরও সুবিধাজনক | অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং জন্য আরও জনপ্রিয় |
আর্গুমেন্ট প্যারামিটারাইজেশন | [<Theory>] এবং InlineData ব্যবহার | [<TestCase>] ব্যবহার |
কোডের পরিষ্কারতা | কোডে সিম্পল এবং পরিষ্কার API | অনেক সময় বেশি অ্যাট্রিবিউট এবং কনফিগারেশন প্রয়োজন |
উপযুক্ত টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করে, আপনি আপনার অ্যাপ্লিকেশনের সঠিকতা, পারফরম্যান্স এবং রক্ষণাবেক্ষণযোগ্যতা নিশ্চিত করতে পারবেন।
Read more