Clojure-এ Test Fixtures এবং Assertion Functions হল সফটওয়্যার টেস্টিংয়ের দুটি গুরুত্বপূর্ণ অংশ। টেস্টিং কোডে ফাংশনালিটি যাচাই করার জন্য এই দুটি টুল ব্যবহার করা হয় যাতে সফটওয়্যারের ভুল বা ত্রুটি কমানো যায়। Clojure-এ টেস্টিং করার জন্য সাধারণভাবে clojure.test লাইব্রেরি ব্যবহার করা হয়, যা টেস্টিংয়ের জন্য ফিক্সচার (fixtures) এবং অ্যাসারশন (assertions) ফাংশন প্রদান করে।
Test Fixtures হল এমন কোড যা টেস্টের আগে বা পরে চলতে পারে এবং প্রাথমিক সেটআপ বা ক্লিনআপের জন্য ব্যবহৃত হয়। এর মাধ্যমে টেস্টগুলোকে নির্দিষ্ট একটি পরিবেশে চালানো যায় এবং টেস্টগুলি শেষ হওয়ার পর প্রয়োজনীয় রিসোর্সগুলি পরিষ্কার করা যায়।
ফিক্সচার সাধারণত ডেটাবেস সংযোগ তৈরি করা, ফাইল সিস্টেম প্রস্তুত করা, বা অন্যান্য প্রস্তুতি কাজের জন্য ব্যবহৃত হয়।
(use 'clojure.test)
(defn setup []
(println "Test setup"))
(defn teardown []
(println "Test cleanup"))
(use-fixtures :each setup) ; `:each` মানে, প্রতিটি টেস্টের আগে ফিক্সচার চলবে
এখানে use-fixtures
ফাংশনটি ব্যবহার করা হয়েছে, যাতে setup
ফাংশনটি প্রতিটি টেস্টের আগে রান হবে।
(ns my-test
(:use [clojure.test]))
(defn setup []
(println "Setting up the test environment"))
(defn teardown []
(println "Cleaning up the test environment"))
(use-fixtures :once setup) ; একবার ফিক্সচার ব্যবহার হবে, সমস্ত টেস্টের আগে
(deftest test-something
(testing "Basic Test"
(is (= 1 1))))
এখানে setup
ফিক্সচারটি শুধুমাত্র একবার টেস্ট রান করার আগে চালানো হবে, এবং teardown
ফিক্সচারটি শেষে ক্লিনআপ হিসেবে ব্যবহার করা যেতে পারে।
Assertion Functions হল সেগুলো ফাংশন যা আপনার কোডের সঠিকতা পরীক্ষা করার জন্য ব্যবহৃত হয়। clojure.test
লাইব্রেরিতে বেশ কিছু বিল্ট-ইন অ্যাসারশন ফাংশন রয়েছে, যেগুলোর মাধ্যমে আপনি আপনার টেস্টগুলোর ফলাফল যাচাই করতে পারেন।
is
: এটি একটি সাধারণ অ্যাসারশন ফাংশন যা একটি শর্ত যাচাই করে। যদি শর্তটি সঠিক হয়, তবে টেস্টটি পাস করবে, অন্যথায় ব্যর্থ হবে।
(is (= 3 (+ 1 2))) ; এটা সঠিক, টেস্ট পাস হবে
are
: এটি একাধিক ইনপুটের জন্য একই অ্যাসারশন চেক করতে ব্যবহৃত হয়।
(are [x y] (= x y)
1 1
2 2
3 3) ; সব টেস্ট পাস হবে
testing
: এটি টেস্টের নাম বা বর্ণনা উল্লেখ করতে ব্যবহৃত হয়, যাতে আপনি কী টেস্ট করছেন তা বুঝতে পারেন।
(testing "Addition works"
(is (= 4 (+ 2 2))))
throwable?
: এটি চেক করে যে কোডটি একটি ত্রুটি ছুড়ে ফেলবে কি না।
(is (thrown? ArithmeticException (/ 1 0))) ; এটি একটি ArithmeticException ছুড়ে ফেলবে
=
, not=
, ==
, identical?
: এগুলি মূল অ্যাসারশন অপারেটর যা মানের তুলনা করে।
(is (= 5 (+ 2 3))) ; পরীক্ষার শর্ত সঠিক, টেস্ট পাস হবে
(is (not= 2 (+ 2 3))) ; পরীক্ষার শর্ত ভুল, টেস্ট ব্যর্থ হবে
(ns my-test
(:use [clojure.test]))
(defn setup []
(println "Setting up resources"))
(defn teardown []
(println "Cleaning up resources"))
(use-fixtures :once setup) ; একবার ফিক্সচার ব্যবহার হবে
(deftest test-arithmetic
(testing "Testing arithmetic functions"
(is (= 4 (+ 2 2))) ; প্রথম অ্যাসারশন
(is (= 6 (+ 3 3)))) ; দ্বিতীয় অ্যাসারশন
(deftest test-string
(testing "Testing string functions"
(is (clojure.string/includes? "hello world" "hello"))
(is (not (clojure.string/includes? "hello world" "goodbye")))))
(deftest test-exception
(testing "Testing for exception"
(is (thrown? ArithmeticException (/ 1 0)))))
use-fixtures
দিয়ে এটি করা হয়।:once
বা :each
ব্যবহার করে নির্দিষ্ট করতে পারেন কখন ফিক্সচার চলবে (একবার বা প্রতিটি টেস্টের আগে)।is
, are
, thrown?
, এবং অন্যান্য অ্যাসারশন ফাংশনগুলি কোডের সঠিকতা যাচাই করতে ব্যবহৃত হয়।Clojure-এ টেস্টিং এবং এক্সেপ্টশন হ্যান্ডলিং খুবই গুরুত্বপূর্ণ এবং এটি নিশ্চিত করে যে আপনার কোড প্রত্যাশিতভাবে কাজ করছে এবং রক্ষণাবেক্ষণযোগ্য। clojure.test
লাইব্রেরি ব্যবহার করে আপনি সিম্পল থেকে অ্যাডভান্সড টেস্টিং স্কেনারিও সমাধান করতে পারেন।
common.read_more