Ruby ট্র্যাকে টেস্ট করা

Exercism-এ আপনার Ruby অনুশীলনীগুলো কীভাবে টেস্ট করবেন তা শিখুন


টেস্ট চালানো

টেস্টগুলো চালাতে হয় এভাবে:

$ ruby hamming_test.rb

কেবল প্রথম টেস্টটি চালানো হবে, বাকি সবগুলো skip মেথড দিয়ে পেন্ডিং করে রাখা হয়েছে। একটি টেস্ট পাস হওয়ার সাথে সাথেই পরের skip মুছে ফেলুন বা কমেন্ট করে দিন।

স্কিপ বোঝা

skip মেথড টেস্ট স্যুটকে একটি টেস্ট না চালানোর নির্দেশ দেয়। এখনো ইমপ্লিমেন্ট করা হয়নি এমন ফাংশনালিটির টেস্ট চালানো এড়াতে এটি সাধারণত ব্যবহার করা হয়, যাতে আপনি এই মুহূর্তে যে অংশ নিয়ে কাজ করছেন সেদিকে মনোযোগ দিতে পারেন।

টেস্ট রান শেষে সারসংক্ষেপে স্কিপ করা টেস্টের সংখ্যা দেখানো হবে। অনুশীলনী শেষ করার আগে সব স্কিপ নিষ্ক্রিয় করে দেওয়া উচিত।

টেস্ট রিপোর্ট কাস্টমাইজ করা

রঙ চাইলে টেস্টগুলো এভাবে চালান:

$ ruby hamming_test.rb -p

টেস্টের নামগুলো দেখতে চাইলে টেস্টগুলো এভাবে চালান:

$ ruby hamming_tests.rb -v

কেবল একটি টেস্ট চালাতে চাইলে, রেগুলার এক্সপ্রেশন স্টাইলের ম্যাচিং দিয়ে একটি টেস্ট বা টেস্টের একটি গ্রুপ নির্দিষ্ট করতে পারেন।

$ ruby hamming_tests.rb -n /empty/

অপশনগুলো একসাথে মিলিয়েও ব্যবহার করতে পারেন।

সব স্কিপ নিষ্ক্রিয় করা

এখন আপনি কোন একক টেস্ট বা টেস্টের গ্রুপ চালাতে চান তা বেছে নেওয়ার নতুন ক্ষমতা অর্জন করেছেন, তাই হয়তো সব স্কিপ নিষ্ক্রিয় করতে চাইবেন।

দ্রুত ও মোটামুটি পদ্ধতি

Ruby-তে মেথড ওভাররাইড করা যায়, এই সুবিধা নিয়ে যদি এই কোড লাইনটি যোগ করেন;

def skip ; end

Hamming টেস্ট ফাইলে এভাবে

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

তাহলে সব স্কিপ আগের মতোই কাজ করবে, তবে আপনার টেস্টগুলো চলতে বাধা দেবে না।

এখনও দ্রুত, তবে আরও পরিচ্ছন্ন পদ্ধতি

অবশ্যই, সময়ের পরিক্রমায় সব ফাইল সম্পাদনা করা বিরক্তিকর হয়ে উঠতে পারে। তাই আমরা অনুশীলনীগুলো তৈরি করার সময় যা করেছিলাম, সেটাই করতে পারেন... এমন একটি ফাইল বানান যাতে skip-এর ডেফিনিশন থাকে, আর দরকার হলে সেটিকে লাইব্রেরি হিসেবে require করুন।

আমাদের "হেল্পার" জিনিসগুলো রাখার জন্য আমরা একটি lib ফোল্ডার তৈরি করেছিলাম, যা দেখতে এরকম:

require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
#     ruby -I../lib -rdisable_skip <filename_test.rb>

module Minitest
  class Test
    def skip(_msg='', _bt=caller)
    end
  end
end

এটি কীভাবে ব্যবহার করবেন তার বর্ণনা ওই ফাইল লিস্টিংয়েই কমেন্ট আকারে দেওয়া আছে, আর ফাইল লিস্টিংটি সম্পূর্ণ অবস্থায় আছে।