Rust:
টেস্ট লিখা

কিভাবে:

রাস্টের বিল্ট-ইন টেস্ট ফ্রেমওয়ার্ক ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট, এবং ডকুমেন্টেশন টেস্ট সমর্থন করে, বাইরের কোনো লাইব্রেরির প্রয়োজন নেই। টেস্ট করার জন্য #[test] দিয়ে অন্নোত করা হয় এবং এ হিসেবে অন্নোত করা যেকোনো ফাংশন একটি টেস্ট হিসাবে কম্পাইল করা হয়।

একটি ইউনিট টেস্ট লেখা:

একটি tests সাব-মডিউলের মধ্যে ইউনিট টেস্টগুলি স্থাপন করুন যা তাদের পরীক্ষার জন্য #[cfg(test)] দিয়ে চিহ্নিত আছে এমন মডিউলের মধ্যে যাতে কেবল টেস্টিং এর সময় তাদের কম্পাইল করা হয়।

// lib.rs অথবা main.rs
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_adds_two() {
        assert_eq!(add(2, 2), 4);
    }
}

টেস্ট চালানো:

$ cargo test

আউটপুট:

   Compiling your_package_name v0.1.0 (/path/to/your_package)
    Finished test [unoptimized + debuginfo] target(s) in 0.00 secs
     Running unittests src/lib.rs (or src/main.rs)

running 1 test
test tests::it_adds_two ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

একটি ইন্টিগ্রেশন টেস্ট লেখা:

ইন্টিগ্রেশন টেস্টগুলি আপনার প্রকল্পের শীর্ষ স্তরের tests ডিরেক্টরির মধ্যে রাখা হয়, src এর পাশাপাশি। tests এর মধ্যে প্রতিটি .rs ফাইল তার নিজের পৃথক ক্রেট হিসাবে কম্পাইল করা হয়।

// tests/integration_test.rs
use your_package_name;

#[test]
fn it_adds_two() {
    assert_eq!(your_package_name::add(2, 2), 4);
}

জনপ্রিয় থার্ড-পার্টি লাইব্রেরিগুলির সাথে টেস্টিং:

আরও বিশদ টেস্টিং ক্ষমতা পাওয়ার জন্য, proptest লাইব্রেরি ফাংশন পরীক্ষার জন্য বিস্তৃত পরিসীমার ইনপুট উৎপাদন করতে পারে।

Cargo.toml -এ proptest কে একটি ডেভ ডিপেন্ডেন্সি হিসেবে যোগ করুন:

[dev-dependencies]
proptest = "1.0"

একই টেস্ট চালানোর জন্য proptest ব্যবহার করুন যা অনেকগুলি স্বয়ংক্রিয়ভাবে উৎপন্ন ইনপুটসহ:

// inside tests/integration_test.rs or a module's #[cfg(test)]

use proptest::prelude::*;

proptest! {
    #[test]
    fn doesnt_crash(a: i32, b:i32) {
        your_package_name::add(a, b);
    }
}

এটি যাচাই করে যে add বিস্তৃত পরিসীমার i32 ইনপুটের জন্য প্যানিক হয় না।