Rust-এ cargo test কমান্ডটি টেস্ট চালানোর জন্য ব্যবহৃত হয়। এটি আপনার প্রকল্পের সমস্ত টেস্ট ফাংশন সনাক্ত করে এবং সেগুলি চালিয়ে আউটপুট দেয়। টেস্ট ফাংশনগুলি সাধারণত #[test] অ্যাট্রিবিউট দিয়ে চিহ্নিত করা হয় এবং cargo test সেই ফাংশনগুলিকে রান করে।
cargo test কমান্ডের ব্যবহার:
টেস্ট চালানো:
প্রকল্পের মূল ডিরেক্টরি থেকেcargo testকমান্ড চালালে, এটি সমস্ত টেস্ট ফাংশনকে রান করবে।cargo testএটি সব টেস্ট চালাবে এবং একটি সারাংশ আউটপুট হিসেবে দেখাবে, যেখানে সফল এবং ব্যর্থ টেস্টগুলোর সংখ্যা থাকবে।
বিশেষ টেস্ট ফাংশন রান করা:
যদি আপনি একটি নির্দিষ্ট টেস্ট ফাংশন চালাতে চান, তবে টেস্টের নাম ব্যবহার করতে পারেন।cargo test test_addএখানে,
test_addহল টেস্ট ফাংশনের নাম।cargo testকেবল ওই নামের টেস্ট ফাংশনটি চালাবে।ফেইলিং টেস্ট দেখানো:
যদি আপনি শুধুমাত্র ব্যর্থ টেস্টগুলো দেখতে চান, তবে--failedফ্ল্যাগ ব্যবহার করতে পারেন।cargo test --failedএটি শুধু ব্যর্থ টেস্টগুলোই দেখাবে।
ডিবাগging বা আউটপুট বিস্তারিত দেখানো:
ডিফল্টভাবে,cargo testটেস্টের সময় কেবল সারাংশ দেখায়। আপনি যদি বিস্তারিত আউটপুট দেখতে চান, তবে-- --nocaptureব্যবহার করতে পারেন।cargo test -- --nocaptureএর মাধ্যমে আপনি টেস্ট চলাকালীন প্রিন্ট করা আউটপুটও দেখতে পারবেন।
টেস্ট ম্যানেজমেন্ট
Rust-এ টেস্ট ম্যানেজমেন্ট খুবই সহজ এবং কার্যকর। cargo test কমান্ডের মাধ্যমে আপনি আপনার সমস্ত টেস্ট চালাতে পারবেন, তবে টেস্টগুলিকে সঠিকভাবে সংগঠিত করতে কিছু নিয়ম অনুসরণ করতে হয়। Rust টেস্ট ম্যানেজমেন্টের মধ্যে ইউনিট টেস্ট এবং ইন্টিগ্রেশন টেস্ট সহ অন্যান্য টেস্টিং পদ্ধতি ব্যবহৃত হয়।
টেস্ট ক্যাটেগরি:
- Unit Tests:
ছোট ছোট কোড ব্লক (যেমন ফাংশন বা মেথড) পরীক্ষা করতে ব্যবহৃত হয়। ইউনিট টেস্টগুলি#[test]অ্যাট্রিবিউটের মাধ্যমে তৈরি হয় এবং সাধারণত কোডের প্রতিটি অংশের সঠিকতা যাচাই করে। - Integration Tests:
বিভিন্ন মডিউল বা ফাংশনের মধ্যে ইন্টারঅ্যাকশন পরীক্ষা করতে ব্যবহৃত হয়। ইন্টিগ্রেশন টেস্টগুলি সাধারণতtests/ফোল্ডারে থাকে এবং একাধিক ফাংশন বা মডিউল একত্রে পরীক্ষা করা হয়। - Documentation Tests:
Rust-এ আপনি আপনার ডকুমেন্টেশনে কোডের উদাহরণ অন্তর্ভুক্ত করতে পারেন, এবং এই উদাহরণগুলিও টেস্ট হিসেবে চলতে পারে। Rust স্বয়ংক্রিয়ভাবে ডকুমেন্টেশন টেস্ট চালায়। যদি আপনি কোড উদাহরণে ভুল করতে চান, তবে তা টেস্ট করা হবে।
টেস্ট ফাইলের সংগঠন:
src/:
প্রকল্পের সোর্স কোড থাকে এবং ইউনিট টেস্টগুলি সাধারণত এখানে লিখা হয়।// src/lib.rs pub fn add(a: i32, b: i32) -> i32 { a + b } #[cfg(test)] mod tests { use super::*; #[test] fn test_add() { assert_eq!(add(2, 3), 5); } }tests/:
ইন্টিগ্রেশন টেস্টগুলি সাধারণত এই ফোল্ডারে থাকে, যেখানে পুরো অ্যাপ্লিকেশন বা মডিউলের ইন্টারঅ্যাকশন পরীক্ষা করা হয়।// tests/integration_test.rs use my_project; #[test] fn test_add_integration() { assert_eq!(my_project::add(2, 3), 5); }Cargo.toml:
টেস্ট ম্যানেজমেন্টের জন্য কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন না হলেও আপনি কিছু ডিপেন্ডেন্সি যুক্ত করতে পারেন। উদাহরণস্বরূপ, টেস্ট ফ্রেমওয়ার্ক বা লোগিং লাইব্রেরি ইনস্টল করার জন্য।[dev-dependencies] criterion = "0.3"
টেস্টের আউটপুট এবং রিপোর্টিং
- কনসোল আউটপুট:
cargo testচালানোর পর, টেস্টের ফলাফল কনসোলে প্রদর্শিত হয়। এখানে, সফল টেস্টগুলির জন্যokএবং ব্যর্থ টেস্টগুলির জন্যFAILEDদেখা যাবে। - ব্যর্থ টেস্ট:
যদি কোনো টেস্ট ব্যর্থ হয়,cargo testতার বিস্তারিত আউটপুট দেখায়, যাতে আপনি সমস্যাটি চিহ্নিত করতে পারেন।
টেস্ট অর্গানাইজেশন এবং কৌশল
- Test-Driven Development (TDD):
TDD কৌশল অনুযায়ী, প্রথমে টেস্ট লিখে তারপর কোড তৈরি করা হয়। Rust এ আপনি এই কৌশল অনুসরণ করে টেস্ট ও কোডের উন্নতি করতে পারেন। - Mocks and Stubs:
Rust-এ মক বা স্টাব ব্যবহার করে একাধিক মডিউলের মধ্যে নির্ভরতা তৈরি করা সহজ হয়। আপনিmockallবা অন্য লাইব্রেরি ব্যবহার করতে পারেন। - Benchmark Tests:
Rust-এ পারফরম্যান্স টেস্টিং করার জন্যcriterionফ্রেমওয়ার্ক ব্যবহার করা যেতে পারে।
সারাংশ
cargo test Rust-এ টেস্ট চালানোর জন্য একটি শক্তিশালী টুল। এটি আপনার কোডের একক ফাংশন বা সিস্টেমের ইন্টিগ্রেশন পরীক্ষা করতে সাহায্য করে। ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট এবং ডকুমেন্টেশন টেস্ট Rust এর টেস্টিং ব্যবস্থার প্রধান অংশ। টেস্ট ম্যানেজমেন্টে সঠিক কনফিগারেশন এবং টেস্ট ফাংশনগুলি সঠিকভাবে সংগঠিত করলে আপনার কোড আরও বিশ্বাসযোগ্য এবং বাগমুক্ত হবে।
Read more