Skill

TestNG এর মধ্যে টেস্ট ইগনোর করা এবং নির্দিষ্ট টেস্ট চালানো

টেস্টএনজি (TestNG) - Java Technologies

372

TestNG ফ্রেমওয়ার্কে টেস্ট কেসগুলোকে কাস্টমাইজ করা যায়, যেমন কিছু টেস্ট ইগনোর করা বা নির্দিষ্ট টেস্ট চালানো। এটি বিশেষত বড় টেস্ট স্যুট পরিচালনার ক্ষেত্রে কার্যকর।


টেস্ট ইগনোর করা

TestNG-তে একটি টেস্ট ইগনোর করতে enabled অ্যাট্রিবিউট ব্যবহার করা হয়। এই অ্যাট্রিবিউট @Test অ্যানোটেশনে false করে সেট করা হলে টেস্টটি ইগনোর হয়।

উদাহরণ: টেস্ট ইগনোর করা

import org.testng.annotations.Test;

public class IgnoreTestExample {

    @Test(enabled = true)
    public void test1() {
        System.out.println("Test 1 is running.");
    }

    @Test(enabled = false)
    public void test2() {
        System.out.println("Test 2 is ignored.");
    }
}

বর্ণনা:

  • enabled = true: এই টেস্ট চালানো হবে।
  • enabled = false: এই টেস্ট ইগনোর করা হবে এবং রান হবে না।

নির্দিষ্ট টেস্ট চালানো

TestNG-তে বিভিন্ন পদ্ধতিতে নির্দিষ্ট টেস্ট কেস চালানো যায়:

১. টেস্ট গ্রুপ ব্যবহার করে নির্দিষ্ট টেস্ট চালানো

TestNG-তে গ্রুপিং ফিচার ব্যবহার করে টেস্ট কেসগুলোকে গ্রুপ করা যায় এবং নির্দিষ্ট গ্রুপ রান করা যায়।

উদাহরণ: টেস্ট গ্রুপিং

import org.testng.annotations.Test;

public class GroupTestExample {

    @Test(groups = {"smoke"})
    public void test1() {
        System.out.println("Smoke test is running.");
    }

    @Test(groups = {"regression"})
    public void test2() {
        System.out.println("Regression test is running.");
    }

    @Test(groups = {"smoke", "regression"})
    public void test3() {
        System.out.println("Smoke and Regression test is running.");
    }
}

XML কনফিগারেশন থেকে নির্দিষ্ট গ্রুপ রান করা

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test Suite">
    <test name="Run Smoke Tests">
        <groups>
            <run>
                <include name="smoke"/>
            </run>
        </groups>
        <classes>
            <class name="com.example.GroupTestExample"/>
        </classes>
    </test>
</suite>

বর্ণনা:

  • শুধু smoke গ্রুপের টেস্ট রান হবে।
  • XML কনফিগারেশন থেকে গ্রুপ উল্লেখ করে নির্দিষ্ট টেস্ট চালানো যায়।

২. টেস্ট মেথডের নাম ব্যবহার করে নির্দিষ্ট টেস্ট চালানো

TestNG-এর XML কনফিগারেশনে নির্দিষ্ট মেথড উল্লেখ করে তা চালানো যায়।

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test Suite">
    <test name="Run Specific Test">
        <classes>
            <class name="com.example.TestExample">
                <methods>
                    <include name="test1"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

বর্ণনা:

  • এখানে শুধুমাত্র test1 মেথড রান হবে।

৩. অ্যানোটেশন অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট টেস্ট চালানো

import org.testng.annotations.Test;

public class PriorityTestExample {

    @Test(priority = 1)
    public void test1() {
        System.out.println("Test 1 is running.");
    }

    @Test(priority = 2)
    public void test2() {
        System.out.println("Test 2 is running.");
    }
}

বর্ণনা:

  • priority সেট করে টেস্ট কেসগুলো একটি নির্দিষ্ট ক্রমে চালানো যায়।

৪. কমান্ড লাইন থেকে নির্দিষ্ট টেস্ট চালানো

TestNG-তে -methods প্যারামিটার ব্যবহার করে নির্দিষ্ট মেথড রান করা যায়।

java -cp "path/to/testng.jar:path/to/your/classes" org.testng.TestNG -testclass com.example.TestExample -methods test1

বর্ণনা:

  • এটি শুধুমাত্র test1 মেথড চালাবে।

সারাংশ

TestNG টেস্ট কাস্টমাইজেশনের জন্য অনেক ফিচার সরবরাহ করে। টেস্ট ইগনোর করতে enabled ব্যবহার করা হয়, এবং নির্দিষ্ট টেস্ট চালানোর জন্য গ্রুপিং, XML কনফিগারেশন, মেথডের নাম, কিংবা কমান্ড লাইন প্যারামিটার ব্যবহার করা যায়। এই ফিচারগুলো বড় টেস্ট স্যুট ম্যানেজমেন্টের ক্ষেত্রে খুবই কার্যকর।

Content added By

টেস্টএনজি-তে @Test(enabled=false) এনোটেশন ব্যবহার করে নির্দিষ্ট কোনো টেস্ট মেথড ইগনোর বা বাদ দেওয়া যায়। এটি তখনই কার্যকর, যখন আপনি কোনো টেস্ট মেথড চালাতে চান না বা সাময়িকভাবে সেটি নিষ্ক্রিয় রাখতে চান।


কীভাবে কাজ করে?

@Test এনোটেশনের enabled অ্যাট্রিবিউট ডিফল্টভাবে true থাকে, যার মানে হলো টেস্টটি চালানো হবে। যদি এটিকে false সেট করা হয়, তবে টেস্টটি এক্সিকিউশন প্রক্রিয়া থেকে বাদ পড়বে।


@Test(enabled=false) এর উদাহরণ

import org.testng.annotations.Test;

public class IgnoreTestExample {

    @Test
    public void test1() {
        System.out.println("Test 1 is running.");
    }

    @Test(enabled = false)
    public void test2() {
        System.out.println("Test 2 is ignored.");
    }

    @Test
    public void test3() {
        System.out.println("Test 3 is running.");
    }
}

আউটপুট:

Test 1 is running.
Test 3 is running.

উপরের উদাহরণে, test2() মেথডে enabled = false সেট করার কারণে এটি চালানো হবে না। অন্যদিকে, test1() এবং test3() মেথডগুলো স্বাভাবিকভাবে চালানো হবে।


কেন এটি ব্যবহার করা হয়?

১. সাময়িক নিষ্ক্রিয়তা: ডেভেলপমেন্ট চলাকালীন কোনো টেস্ট চালাতে না চাইলে এটি ব্যবহার করা হয়।
২. ডিবাগিং সহায়তা: ডিবাগ করার সময় অপ্রয়োজনীয় টেস্টগুলো এড়িয়ে যাওয়ার জন্য।
৩. অপূর্ণ ফিচার: যদি টেস্ট মেথডটি কোনো অসমাপ্ত ফিচারের জন্য লেখা হয়, তবে সেটি ইগনোর করা যেতে পারে।
৪. টেস্ট ব্যর্থতা এড়ানো: যখন কোনো টেস্ট ডেটা বা পরিবেশ প্রস্তুত নয়, তখন ইগনোর করে রাখা যায়।


প্রয়োজনীয় সতর্কতা

  • @Test(enabled=false) দিয়ে টেস্ট ইগনোর করা সাময়িক সমাধান। টেস্ট দীর্ঘদিন ধরে নিষ্ক্রিয় রাখা ঠিক নয়।
  • ফাইনাল বিল্ডে যাবার আগে নিষ্ক্রিয় টেস্টগুলো পুনরায় চালানো এবং তাদের কার্যকারিতা যাচাই করা উচিত।

অন্যান্য বিকল্প

টেস্ট ইগনোর করার জন্য @Test(enabled=false) ছাড়াও অন্যান্য উপায় ব্যবহার করা যায়। যেমন:

  • গ্রুপিং এবং XML কনফিগারেশন: XML ফাইলের মাধ্যমে নির্দিষ্ট টেস্ট বাদ দেওয়া।
  • DependsOnMethods: নির্ভরশীল টেস্ট মেথড বাদ দেওয়া।
  • Conditional Skip: নির্দিষ্ট শর্তে টেস্ট স্কিপ করা (যেমন throw new SkipException("Message"))।

@Test(enabled=false) হল একটি সহজ এবং কার্যকর উপায় টেস্ট ইগনোর করার জন্য, বিশেষত যখন দ্রুত সমাধান প্রয়োজন হয়। তবে এটি ব্যবহারে পরিকল্পিত এবং সংগঠিত পদ্ধতি অনুসরণ করা উচিত।

Content added By

TestNG ফ্রেমওয়ার্কে <include> এবং <exclude> ট্যাগ ব্যবহার করে নির্দিষ্ট টেস্ট মেথড চালানো বা বাদ দেওয়া সম্ভব। এটি বড় প্রজেক্টে টেস্ট কেস ফিল্টার করার একটি কার্যকর উপায়।


<include> এবং <exclude> এর ব্যবহার

<include> ট্যাগ:

এটি নির্দিষ্ট টেস্ট মেথড চালানোর জন্য ব্যবহৃত হয়।

<exclude> ট্যাগ:

এটি নির্দিষ্ট টেস্ট মেথড টেস্ট এক্সিকিউশন থেকে বাদ দিতে ব্যবহৃত হয়।


উদাহরণ: <include> এবং <exclude> ট্যাগ ব্যবহার

নিচে একটি উদাহরণ দেখানো হলো যেখানে টেস্ট ক্লাসের মধ্যে কিছু মেথড চালানো এবং কিছু বাদ দেওয়া হয়েছে।

TestNG টেস্ট ক্লাস

import org.testng.annotations.Test;

public class SampleTest {

    @Test
    public void testMethodOne() {
        System.out.println("Executing Test Method One");
    }

    @Test
    public void testMethodTwo() {
        System.out.println("Executing Test Method Two");
    }

    @Test
    public void testMethodThree() {
        System.out.println("Executing Test Method Three");
    }
}

TestNG XML ফাইল

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="IncludeExcludeExample">
        <classes>
            <class name="com.example.tests.SampleTest">
                <methods>
                    <include name="testMethodOne" />
                    <include name="testMethodThree" />
                    <exclude name="testMethodTwo" />
                </methods>
            </class>
        </classes>
    </test>
</suite>

এক্সিকিউশন ব্যাখ্যা

উপরের testng.xml ফাইল অনুসারে:

  1. testMethodOne এবং testMethodThree চালানো হবে কারণ এগুলো <include> ট্যাগে রয়েছে।
  2. testMethodTwo চালানো হবে না কারণ এটি <exclude> ট্যাগে রয়েছে।

শুধু <include> ব্যবহার

যদি আপনি শুধু কিছু মেথড চালাতে চান, তাহলে শুধুমাত্র <include> ট্যাগ ব্যবহার করতে পারেন।

<methods>
    <include name="testMethodOne" />
    <include name="testMethodThree" />
</methods>

শুধু <exclude> ব্যবহার

যদি আপনি কিছু নির্দিষ্ট মেথড বাদ দিতে চান, তাহলে শুধুমাত্র <exclude> ট্যাগ ব্যবহার করতে পারেন।

<methods>
    <exclude name="testMethodTwo" />
</methods>

গ্রুপিং এর সাথে <include> এবং <exclude> ব্যবহার

TestNG-তে গ্রুপিং এর মাধ্যমেও নির্দিষ্ট মেথড চালানো বা বাদ দেওয়া যায়।

টেস্ট ক্লাস:

import org.testng.annotations.Test;

public class GroupedTest {

    @Test(groups = {"smoke"})
    public void smokeTest() {
        System.out.println("Executing Smoke Test");
    }

    @Test(groups = {"regression"})
    public void regressionTest() {
        System.out.println("Executing Regression Test");
    }

    @Test(groups = {"smoke", "regression"})
    public void mixedTest() {
        System.out.println("Executing Mixed Test");
    }
}

TestNG XML ফাইল:

<groups>
    <run>
        <include name="smoke" />
        <exclude name="regression" />
    </run>
</groups>

এক্সিকিউশন ব্যাখ্যা

  1. smoke গ্রুপের মেথডগুলো চালানো হবে।
  2. regression গ্রুপের মেথডগুলো চালানো হবে না, এমনকি সেগুলো smoke এর সাথেও যুক্ত থাকলে।

উপকারিতা

  • বড় প্রজেক্টে টেস্ট মেথড ফিল্টার করা সহজ হয়।
  • অপ্রয়োজনীয় বা অস্থায়ী টেস্ট বাদ দিয়ে টেস্ট রান সময় কমানো যায়।
  • নির্দিষ্ট টেস্ট কেসগুলোর উপর ফোকাস করার সুযোগ দেয়।

<include> এবং <exclude> ট্যাগ ব্যবহার করে TestNG-তে টেস্ট এক্সিকিউশন আরও বেশি নিয়ন্ত্রণযোগ্য এবং কার্যকর করা সম্ভব।

Content added By

TestNG ফ্রেমওয়ার্ক ব্যবহার করে নির্দিষ্ট টেস্ট চালানো বা কিছু টেস্ট ইগনোর করা যায়। এটি টেস্টিং প্রক্রিয়াকে আরও নমনীয় এবং কার্যকর করে। এখানে টেস্ট ইগনোর করা এবং নির্দিষ্ট টেস্ট চালানোর বিভিন্ন উপায় উদাহরণসহ ব্যাখ্যা করা হলো।


টেস্ট ইগনোর করা (Test Ignore)

enabled প্যারামিটার ব্যবহার করে

TestNG-তে @Test এনোটেশনের enabled প্যারামিটার ব্যবহার করে সহজেই কোনো টেস্ট মেথড ইগনোর করা যায়।

উদাহরণ:

import org.testng.annotations.Test;

public class IgnoreTestExample {

    @Test
    public void testMethod1() {
        System.out.println("This test will run.");
    }

    @Test(enabled = false)
    public void testMethod2() {
        System.out.println("This test will be ignored.");
    }
}

আউটপুট:

  • testMethod1 চালানো হবে।
  • testMethod2 ইগনোর করা হবে।

নির্দিষ্ট টেস্ট চালানো (Running Specific Tests)

১. টেস্ট গ্রুপ ব্যবহার করে নির্দিষ্ট টেস্ট চালানো

TestNG-তে গ্রুপিং ফিচার ব্যবহার করে নির্দিষ্ট টেস্ট রান করা যায়। মেথডগুলোতে @Test(groups = "groupName") ব্যবহার করে গ্রুপিং করতে হয়।

উদাহরণ:

import org.testng.annotations.Test;

public class GroupTestExample {

    @Test(groups = {"smoke"})
    public void testMethod1() {
        System.out.println("Smoke test 1 is running.");
    }

    @Test(groups = {"regression"})
    public void testMethod2() {
        System.out.println("Regression test 1 is running.");
    }

    @Test(groups = {"smoke", "regression"})
    public void testMethod3() {
        System.out.println("Smoke and Regression test is running.");
    }
}

testng.xml কনফিগারেশন:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="TestSuite">
    <test name="GroupedTests">
        <groups>
            <run>
                <include name="smoke"/>
            </run>
        </groups>
        <classes>
            <class name="com.example.tests.GroupTestExample"/>
        </classes>
    </test>
</suite>

আউটপুট:

শুধু smoke গ্রুপের টেস্ট (testMethod1 এবং testMethod3) রান হবে।


২. নির্দিষ্ট মেথড রান করা

testng.xml ফাইল ব্যবহার করে নির্দিষ্ট মেথড রান করা যায়।

উদাহরণ:

import org.testng.annotations.Test;

public class SpecificMethodTestExample {

    @Test
    public void testMethod1() {
        System.out.println("Test Method 1 is running.");
    }

    @Test
    public void testMethod2() {
        System.out.println("Test Method 2 is running.");
    }

    @Test
    public void testMethod3() {
        System.out.println("Test Method 3 is running.");
    }
}

testng.xml কনফিগারেশন:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="TestSuite">
    <test name="SpecificMethodTest">
        <classes>
            <class name="com.example.tests.SpecificMethodTestExample">
                <methods>
                    <include name="testMethod2"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

আউটপুট:

শুধু testMethod2 রান হবে।


টেস্ট স্কিপ করা (Test Skip)

TestNG-তে শর্ত সাপেক্ষে টেস্ট স্কিপ করা যায়। throw new SkipException() ব্যবহার করে এটি করা হয়।

উদাহরণ:

import org.testng.SkipException;
import org.testng.annotations.Test;

public class SkipTestExample {

    @Test
    public void testMethod1() {
        System.out.println("This test will run.");
    }

    @Test
    public void testMethod2() {
        System.out.println("This test will be skipped.");
        throw new SkipException("Skipping testMethod2 for demonstration.");
    }
}

আউটপুট:

  • testMethod1 রান হবে।
  • testMethod2 স্কিপ করা হবে।

সারাংশ

  • ইগনোর: @Test(enabled = false) ব্যবহার করে কোনো টেস্ট ইগনোর করা যায়।
  • নির্দিষ্ট টেস্ট চালানো:
    • গ্রুপ নির্ধারণ করে (উদাহরণ: @Test(groups = "smoke"))।
    • testng.xml ফাইলের <methods> ট্যাগ ব্যবহার করে।
  • স্কিপ: SkipException ব্যবহার করে শর্ত সাপেক্ষে টেস্ট স্কিপ করা যায়।

TestNG-এর এই ফিচারগুলো টেস্ট কেস ম্যানেজমেন্টকে আরও কার্যকর করে এবং জটিল প্রোজেক্টে টেস্ট কনফিগারেশন সহজ করে।

Content added By
Promotion

Are you sure to start over?

Loading...