Java Technologies IRetryAnalyzer Interface এর ব্যবহার গাইড ও নোট

370

TestNG-তে IRetryAnalyzer Interface একটি অত্যন্ত গুরুত্বপূর্ণ ফিচার, যা আপনাকে টেস্টের পুনঃচালনা (retry) করতে সহায়তা করে। এটি বিশেষভাবে তখন কাজে আসে যখন কোনো টেস্ট মেথড ব্যর্থ হয় এবং আপনি চান যে সেটি পুনরায় চালানো হোক। এটি অটোমেটিকভাবে নির্দিষ্ট সংখ্যক বার টেস্ট পুনরায় চালানোর সুযোগ প্রদান করে, যাতে কোনো ফ্লুক (fluke) বা অস্থির পরিবেশে টেস্টটি সফল হতে পারে।


IRetryAnalyzer Interface কি?

IRetryAnalyzer একটি TestNG ইন্টারফেস যা retry পদ্ধতি প্রদান করে। আপনি যখন কোনো টেস্ট মেথডে IRetryAnalyzer ইন্টারফেস ইমপ্লিমেন্ট করেন, তখন TestNG নির্দিষ্ট সংখ্যক বার টেস্ট পুনরায় চালাবে যদি সেই টেস্ট ব্যর্থ হয়।


IRetryAnalyzer ইন্টারফেসের প্রধান পদ্ধতি

IRetryAnalyzer ইন্টারফেসের একটি মাত্র পদ্ধতি আছে:

public interface IRetryAnalyzer {
    boolean retry(ITestResult result);
}

এটি একটি boolean রিটার্ন করে, যা নির্ধারণ করে টেস্টটি পুনরায় চালানো হবে কিনা:

  • true: টেস্টটি পুনরায় চালানো হবে।
  • false: টেস্টটি আর পুনরায় চালানো হবে না এবং ফেইলড হিসেবে চিহ্নিত হবে।

IRetryAnalyzer ইন্টারফেস ব্যবহার করার উদাহরণ

১. IRetryAnalyzer ইমপ্লিমেন্ট করা

প্রথমে একটি ক্লাস তৈরি করতে হবে যা IRetryAnalyzer ইন্টারফেস ইমপ্লিমেন্ট করবে। এই ক্লাসে আপনি সেটি কনফিগার করবেন যাতে টেস্টটি নির্দিষ্ট সংখ্যক বার পুনরায় চালানো হয়।

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;

public class RetryAnalyzer implements IRetryAnalyzer {

    private int count = 0;
    private int maxRetryCount = 3; // সর্বোচ্চ পুনরায় চালানোর সংখ্যা

    @Override
    public boolean retry(ITestResult result) {
        if (count < maxRetryCount) {
            count++;
            System.out.println("Retrying test: " + result.getName() + " for the " + count + " time.");
            return true; // টেস্ট পুনরায় চালানো হবে
        }
        return false; // আর পুনরায় চালানো হবে না
    }
}

২. টেস্ট মেথডে IRetryAnalyzer ব্যবহার করা

এখন আপনার টেস্ট মেথডে @Test এনোটেশনে retryAnalyzer প্যারামিটার ব্যবহার করে আপনি IRetryAnalyzer ক্লাসটি রেফারেন্স করতে পারেন।

import org.testng.annotations.Test;

public class TestRetryExample {

    @Test(retryAnalyzer = RetryAnalyzer.class)
    public void testMethod() {
        System.out.println("Executing test method");
        // একটি কৃত্রিম ব্যর্থতা যোগ করা হয়েছে
        assert false : "Failing the test to demonstrate retry functionality.";
    }
}

উদাহরণ বর্ণনা:

  • RetryAnalyzer ক্লাসে ৩ বার পুনরায় টেস্ট চালানোর ব্যবস্থা করা হয়েছে।
  • testMethod মেথডে ইচ্ছাকৃতভাবে ব্যর্থতা সৃষ্টি করা হয়েছে (assert false), যাতে RetryAnalyzer কাজ করে এবং টেস্টটি পুনরায় চালানো হয়।

আউটপুট:

প্রতিটি পুনরায় চালানোর পরে, কনসোলে "Retrying test" বার্তা দেখা যাবে এবং মোট ৩ বার টেস্টটি পুনরায় চালানো হবে।


IRetryAnalyzer-এ ডাইনামিক কনফিগারেশন

আপনি চাইলে IRetryAnalyzer ইন্টারফেসের মধ্যে ডাইনামিক কনফিগারেশনও করতে পারেন, যেমন নির্দিষ্ট শর্তে পুনঃচালনার সংখ্যা বৃদ্ধি বা হ্রাস করা।

public class DynamicRetryAnalyzer implements IRetryAnalyzer {

    private int count = 0;
    private int maxRetryCount = Integer.parseInt(System.getProperty("maxRetryCount", "3"));

    @Override
    public boolean retry(ITestResult result) {
        if (count < maxRetryCount) {
            count++;
            System.out.println("Retrying test: " + result.getName() + " for the " + count + " time.");
            return true;
        }
        return false;
    }
}

এখানে maxRetryCount টেস্ট রান করার সময় System properties থেকে ডাইনামিকভাবে নির্ধারিত হচ্ছে, যা টেস্ট চালানোর সময় কাস্টমাইজ করা যাবে।

কমান্ড লাইন থেকে System property সেট করা:

mvn test -DmaxRetryCount=5

TestNG XML ফাইলে IRetryAnalyzer কনফিগারেশন

আপনি testng.xml ফাইলেও retryAnalyzer সেট করতে পারেন।

উদাহরণ testng.xml কনফিগারেশন:

<suite name="TestSuite">
    <test name="RetryTest">
        <classes>
            <class name="com.example.tests.TestRetryExample">
                <methods>
                    <retryAnalyzer class="com.example.tests.RetryAnalyzer"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

এখানে retryAnalyzer ট্যাগের মাধ্যমে RetryAnalyzer ক্লাসকে রেফারেন্স করা হয়েছে।


সারাংশ

  • IRetryAnalyzer Interface টেস্ট ফেইল হলে সেটি পুনরায় চালানোর জন্য ব্যবহৃত হয়।
  • আপনি retry count কাস্টমাইজ করতে পারেন, যা নির্দিষ্ট সংখ্যক বার টেস্ট পুনরায় চালাবে।
  • @Test(retryAnalyzer = RetryAnalyzer.class) ব্যবহার করে টেস্ট মেথডে IRetryAnalyzer ইন্টিগ্রেট করা হয়।
  • এটি পুনঃচালনা (retry) এবং ব্যর্থ টেস্ট কেসগুলির জন্য খুবই কার্যকর।

এই ফিচারটি ফ্লুক বা অস্থির পরিবেশের কারণে ব্যর্থ টেস্টগুলিকে পুনরায় পরীক্ষা করার জন্য সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...