Elixir তে ExUnit ফ্রেমওয়ার্ক ব্যবহার করে Unit Testing
ExUnit হল Elixir তে একটি টেস্টিং ফ্রেমওয়ার্ক যা ইউনিট টেস্ট (Unit Testing) লিখতে এবং চালানোর জন্য ব্যবহৃত হয়। এটি Elixir তে টেস্টিংয়ের জন্য একটি শক্তিশালী এবং সহজ উপায় সরবরাহ করে। ExUnit ফ্রেমওয়ার্কটি মূলত assertion-based testing সাপোর্ট করে এবং আপনি বিভিন্ন অ্যাসারশন ব্যবহার করে আপনার কোডের কার্যকারিতা যাচাই করতে পারেন।
Elixir তে টেস্টিং খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি বড় এবং জটিল সিস্টেম তৈরি করছেন। ExUnit ফ্রেমওয়ার্কের মাধ্যমে আপনি ছোট ছোট ইউনিট টেস্ট লিখে আপনার কোডের অপ্রত্যাশিত ত্রুটি শনাক্ত করতে পারবেন।
1. ExUnit ফ্রেমওয়ার্ক ইন্সটলেশন এবং কনফিগারেশন
ExUnit ফ্রেমওয়ার্ক Elixir এর সাথে ডিফল্টভাবেই অন্তর্ভুক্ত থাকে, তাই আপনাকে আলাদা করে ইন্সটল করতে হয় না। তবে, প্রথমে আপনাকে ExUnit কে সক্রিয় করতে হবে এবং টেস্ট চালানোর আগে সেটিকে কনফিগার করতে হবে।
ExUnit সক্রিয় করা:
প্রথমে, ExUnit.start/0 ফাংশনটি আপনার প্রজেক্টের মধ্যে কল করতে হবে।
ExUnit.start()এটি আপনার টেস্ট রান করার পরিবেশ প্রস্তুত করবে।
2. টেস্ট ফাইল তৈরি করা
Elixir প্রজেক্টে টেস্ট লিখতে test/ ডিরেক্টরিতে ফাইল তৈরি করা হয়। আপনার কোডের জন্য একটি টেস্ট ফাইল তৈরি করুন এবং সেখানে আপনার টেস্ট লিখুন।
টেস্ট ফাইল স্ট্রাকচার:
my_project/
├── lib/
│ └── my_project.ex
├── test/
│ └── my_project_test.exs
└── mix.exsএখানে, my_project_test.exs ফাইলটি আপনার টেস্ট লিখার জায়গা। প্রতিটি টেস্ট ফাইলে টেস্ট কেস ডিফাইন করতে হবে।
3. ExUnit টেস্ট কেস লিখা
ExUnit এর টেস্ট কেস লিখতে use ExUnit.Case মডিউলটি ব্যবহার করা হয়। এর মধ্যে test/2 ফাংশন ব্যবহার করে আপনার টেস্ট কেস ডিফাইন করবেন। test ব্লকে অ্যাসারশনগুলো লিখতে হয়, যেগুলি আপনার কোডের সঠিকতা যাচাই করে।
টেস্ট কেস লেখা উদাহরণ:
defmodule MyProjectTest do
use ExUnit.Case
test "1 + 1 equals 2" do
assert 1 + 1 == 2
end
test "string concatenation" do
assert "Hello, " <> "Elixir!" == "Hello, Elixir!"
end
endএখানে, প্রথম টেস্টে assert ব্যবহার করা হয়েছে যা চেক করে যে 1 + 1 সত্যিই 2 কিনা। দ্বিতীয় টেস্টে স্ট্রিং কনক্যাটেনেশন চেক করা হয়েছে।
4. টেস্ট চালানো
আপনার টেস্ট ফাইল প্রস্তুত হলে, আপনি mix test কমান্ড দিয়ে টেস্ট চালাতে পারেন। এটি আপনার সকল টেস্ট ফাইল রান করবে এবং ফলাফল দেখাবে।
টেস্ট চালানো:
mix testএটি সমস্ত টেস্ট ফাইলগুলো রান করবে এবং টেস্টের ফলাফল প্রদর্শন করবে। উদাহরণস্বরূপ:
..
Finished in 0.02 seconds
2 tests, 0 failuresযদি কোনো টেস্ট ফেইল হয়, তবে বিস্তারিত ত্রুটি বার্তা দেখতে পারবেন।
5. টেস্টের মধ্যে Assertions
ExUnit এ বিভিন্ন ধরনের অ্যাসারশন ব্যবহৃত হতে পারে। এখানে কিছু সাধারণ অ্যাসারশনের উদাহরণ:
assert: এই অ্যাসারশনটি একটি শর্ত যদি সত্য (true) হয়, তবে টেস্টটি সফল হবে।
assert 2 + 2 == 4refute: এই অ্যাসারশনটি একটি শর্ত যদি মিথ্যা (false) হয়, তবে টেস্টটি সফল হবে।
refute 2 + 2 == 5assert_raise: এই অ্যাসারশনটি চেক করে যে, একটি নির্দিষ্ট এক্সসেপশন ঘটছে কি না।
assert_raise ArithmeticError, fn -> 1 / 0 endassert_in_delta: এই অ্যাসারশনটি ফ্লোট ভ্যালুর মধ্যে একটি মার্জিন (delta) চেক করে।
assert_in_delta 3.14, 3.14159, 0.01assert_received: এই অ্যাসারশনটি মেসেজ রিসিভের জন্য ব্যবহৃত হয়, যেমন যদি একটি প্রক্রিয়া মেসেজ পাঠায় এবং আপনি সেই মেসেজটি পেয়েছেন কি না তা যাচাই করতে।
assert_received {:message, "Hello"}
6. টেস্ট কেস গ্রুপিং (Test Setup and Teardown)
ExUnit আপনাকে setup এবং teardown ফাংশন ব্যবহার করতে দেয় যাতে প্রতিটি টেস্টের আগে কিছু ইনিশিয়ালাইজেশন বা পরে পরিষ্কারকরণ করা যায়।
setup এবং teardown উদাহরণ:
defmodule MyProjectTest do
use ExUnit.Case
setup do
{:ok, initial_data: 10}
end
test "using setup data", context do
assert context[:initial_data] == 10
end
endএখানে, setup ফাংশন একটি কনটেক্সট (context) প্রদান করে যা টেস্টের মধ্যে ব্যবহৃত হয়।
7. টেস্ট কভারেজ
Elixir তে mix test.coverage ব্যবহার করে আপনি টেস্ট কভারেজ দেখতে পারেন। এটি টেস্ট চলাকালীন আপনার কোডের কতটা অংশ টেস্ট করা হয়েছে তা দেখায়।
mix test --coverএটি আপনাকে একটি কভারেজ রিপোর্ট প্রদান করবে যা দেখাবে কেমনভাবে আপনার টেস্ট কোড কভার করছে।
সারসংক্ষেপ
ExUnit Elixir তে ইউনিট টেস্ট লেখার এবং চালানোর জন্য একটি অত্যন্ত কার্যকরী ফ্রেমওয়ার্ক। এর মাধ্যমে আপনি:
- বিভিন্ন ধরনের অ্যাসারশন ব্যবহার করে আপনার কোড পরীক্ষা করতে পারেন
- টেস্টের জন্য setup এবং teardown পরিচালনা করতে পারেন
- সহজেই টেস্ট চালিয়ে ফলাফল পেতে পারেন
ExUnit ব্যবহারের মাধ্যমে আপনি Elixir প্রজেক্টের কোডের কার্যকারিতা, নিরাপত্তা এবং নির্ভরযোগ্যতা নিশ্চিত করতে পারবেন।
Read more