Skill

TestNG এর মধ্যে টেস্ট ডেটা প্রোভাইডার

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

355

DataProvider TestNG-এর একটি শক্তিশালী ফিচার যা ডেটা ড্রিভেন টেস্টিং (Data-driven Testing) এর জন্য ব্যবহৃত হয়। এটি একাধিক ইনপুট ভ্যালু দিয়ে একই টেস্ট মেথড চালাতে সাহায্য করে।


DataProvider কী?

DataProvider হলো TestNG-এর একটি অ্যানোটেশন যা টেস্ট মেথডে ডেটা সরবরাহ করে। এটি দ্বি-মাত্রিক (two-dimensional) Object array রিটার্ন করে, যেখানে প্রতিটি ইনপুট ডেটা একবার টেস্ট মেথডে পাস হয়।


DataProvider এর গঠন

@DataProvider(name = "dataProviderName")
public Object[][] methodName() {
    return new Object[][] {
        {dataSet1}, {dataSet2}, ...
    };
}
  • @DataProvider: টেস্ট মেথডে ডেটা সরবরাহকারী মেথড চিহ্নিত করে।
  • name: DataProvider-এর নাম। এটি @Test অ্যানোটেশনের dataProvider প্যারামিটার হিসেবে ব্যবহৃত হয়।
  • Object[][]: দ্বি-মাত্রিক অ্যারে, যেখানে প্রতিটি সারি টেস্ট মেথডের জন্য ইনপুট ডেটা নির্দেশ করে।

উদাহরণ: সাধারণ DataProvider

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderExample {

    @DataProvider(name = "testData")
    public Object[][] provideData() {
        return new Object[][] {
            {"Alice", 25},
            {"Bob", 30},
            {"Charlie", 35}
        };
    }

    @Test(dataProvider = "testData")
    public void testMethod(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

আউটপুট

Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35

উদাহরণ: ডাইনামিক ডেটা জেনারেশন

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DynamicDataExample {

    @DataProvider(name = "dynamicData")
    public Object[][] generateData() {
        int dataSetSize = 3;
        Object[][] data = new Object[dataSetSize][2];

        for (int i = 0; i < dataSetSize; i++) {
            data[i][0] = "User" + (i + 1);
            data[i][1] = 20 + i;
        }
        return data;
    }

    @Test(dataProvider = "dynamicData")
    public void testMethod(String username, int age) {
        System.out.println("Username: " + username + ", Age: " + age);
    }
}

আউটপুট

Username: User1, Age: 20
Username: User2, Age: 21
Username: User3, Age: 22

DataProvider এর সঙ্গে External ডেটা

DataProvider ব্যবহার করে ফাইল (যেমন CSV, Excel) বা ডাটাবেস থেকে ডেটা লোড করা সম্ভব।

উদাহরণ: External File থেকে DataProvider

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ExternalDataExample {

    @DataProvider(name = "csvData")
    public Object[][] readCsvData() throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader("data.csv"));
        String line;
        Object[][] data = new Object[3][2]; // Assuming 3 rows and 2 columns
        int i = 0;

        while ((line = reader.readLine()) != null) {
            String[] values = line.split(",");
            data[i][0] = values[0]; // First Column
            data[i][1] = Integer.parseInt(values[1]); // Second Column
            i++;
        }

        reader.close();
        return data;
    }

    @Test(dataProvider = "csvData")
    public void testMethod(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

CSV ফাইল (data.csv):

Alice,25
Bob,30
Charlie,35

আউটপুট

Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35

DataProvider Parameter শেয়ারিং

যদি DataProvider অন্য কোনো ক্লাসে থাকে, তবে @Test-এ dataProviderClass প্যারামিটার ব্যবহার করে সেটি ইমপোর্ট করা যায়।

import org.testng.annotations.Test;

public class SharedDataProviderExample {

    @Test(dataProvider = "testData", dataProviderClass = DataProviders.class)
    public void testMethod(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

DataProviders ক্লাস:

import org.testng.annotations.DataProvider;

public class DataProviders {

    @DataProvider(name = "testData")
    public static Object[][] provideData() {
        return new Object[][] {
            {"Alice", 25},
            {"Bob", 30},
            {"Charlie", 35}
        };
    }
}

উপকারিতা

  • ডেটা ড্রিভেন টেস্টিং সহজ করা।
  • একই টেস্ট মেথডে একাধিক ডেটাসেট পরীক্ষা করা যায়।
  • কোডের পুনরাবৃত্তি হ্রাস করে।
  • এক্সটার্নাল সোর্স থেকে ডেটা লোড করার সুবিধা।

DataProvider TestNG-এর একটি অপরিহার্য ফিচার, যা টেস্টিংয়ের গতি ও কার্যকারিতা বাড়াতে বিশেষভাবে সহায়ক।

Content added By

@DataProvider অ্যানোটেশন কি?

TestNG-র @DataProvider অ্যানোটেশনটি ব্যবহার করে ডেটা-ড্রিভেন টেস্টিং (Data-driven Testing) কার্যকর করা হয়। এটি একটি টেস্ট মেথডে একাধিক ইনপুট ডেটা সরবরাহ করার সুবিধা দেয়। @DataProvider একটি মেথড চিহ্নিত করে, যা একটি টেস্ট মেথডের জন্য ডেটা প্রস্তুত করে।

মূল বৈশিষ্ট্য:

  • এটি Object[][] (দুই মাত্রার অবজেক্ট অ্যারে) রিটার্ন করে।
  • প্রতিটি সারি একটি টেস্ট মেথডের জন্য ইনপুট ডেটার সেট হিসেবে কাজ করে।
  • @DataProvider এর মাধ্যমে একই টেস্ট মেথডকে একাধিক ইনপুট সেট দিয়ে পুনরাবৃত্তি করে চালানো যায়।

@DataProvider এর প্রয়োজনীয়তা

১. ডেটা-ড্রিভেন টেস্টিং সহজ করা:
@DataProvider ব্যবহার করে টেস্ট কেসে বিভিন্ন ধরণের ইনপুট ডেটা প্রদান করা সহজ হয়।

২. রিডুস কোড রিপিটেশন:
একই ধরনের টেস্ট মেথডের জন্য বারবার আলাদা কোড লেখার পরিবর্তে একাধিক ইনপুট দিয়ে টেস্ট চালানো যায়।

৩. টেস্ট কভারেজ বৃদ্ধি:
একই টেস্ট মেথড দিয়ে বিভিন্ন ইনপুটের জন্য টেস্ট চালানো গেলে টেস্ট কভারেজ বৃদ্ধি পায়।

৪. ডায়নামিক ডেটা টেস্টিং:
পরিবর্তনশীল ডেটা সরবরাহের জন্য উপযোগী।


@DataProvider এর ব্যবহার

উদাহরণ: সহজ @DataProvider

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderExample {

    @DataProvider(name = "loginData")
    public Object[][] dataProviderMethod() {
        return new Object[][] {
            {"admin", "admin123"},
            {"user1", "password1"},
            {"user2", "password2"}
        };
    }

    @Test(dataProvider = "loginData")
    public void testLogin(String username, String password) {
        System.out.println("Testing login with Username: " + username + " and Password: " + password);
    }
}

আউটপুট:

Testing login with Username: admin and Password: admin123  
Testing login with Username: user1 and Password: password1  
Testing login with Username: user2 and Password: password2

বিস্তারিত ব্যাখ্যা:

  • @DataProvider অ্যানোটেশন দিয়ে dataProviderMethod মেথডটি তৈরি করা হয়েছে। এটি একটি Object[][] ডেটা প্রদান করে।
  • @Test অ্যানোটেশনে dataProvider অ্যাট্রিবিউট ব্যবহার করে @DataProvider মেথডের নাম উল্লেখ করা হয়েছে।
  • একাধিক ইনপুট ডেটা দিয়ে testLogin মেথডটি বারবার চালানো হয়েছে।

উদাহরণ: @DataProvider এর মাধ্যমে গণনা টেস্টিং

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class CalculatorTest {

    @DataProvider(name = "numbers")
    public Object[][] dataProviderMethod() {
        return new Object[][] {
            {5, 3, 8},
            {10, 20, 30},
            {7, -2, 5}
        };
    }

    @Test(dataProvider = "numbers")
    public void testAddition(int num1, int num2, int expectedResult) {
        int actualResult = num1 + num2;
        System.out.println("Addition of " + num1 + " and " + num2 + " is: " + actualResult);
        assert actualResult == expectedResult : "Test Failed!";
    }
}

আউটপুট:

Addition of 5 and 3 is: 8  
Addition of 10 and 20 is: 30  
Addition of 7 and -2 is: 5

বিস্তারিত ব্যাখ্যা:

  • এখানে @DataProvider তিনটি ইনপুট সেট সরবরাহ করেছে।
  • testAddition মেথড প্রতিটি ইনপুট সেট দিয়ে আলাদাভাবে টেস্ট চালিয়েছে।

উদাহরণ: ডায়নামিক ডেটা প্রদান (Java Object থেকে)

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DynamicDataProviderExample {

    @DataProvider(name = "dynamicData")
    public Object[][] provideData() {
        return new Object[][] {
            {"John", 25},
            {"Emma", 30},
            {"Oliver", 35}
        };
    }

    @Test(dataProvider = "dynamicData")
    public void testUserDetails(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

আউটপুট:

Name: John, Age: 25  
Name: Emma, Age: 30  
Name: Oliver, Age: 35

@DataProvider এর অ্যাডভান্স বৈশিষ্ট্য

১. একই @DataProvider ব্যবহার করে একাধিক টেস্ট চালানো

একটি @DataProvider মেথড ব্যবহার করে একাধিক টেস্ট মেথড পরিচালনা করা যায়।

২. Dynamic Data Generation:

@DataProvider এর সাহায্যে ডেটা ডাইনামিক্যালি তৈরি করা সম্ভব, যেমন ডাটাবেস বা ফাইল থেকে।


@DataProvider এর উপকারিতা

  • পরীক্ষার কার্যকারিতা বৃদ্ধি: একাধিক ইনপুট ব্যবহার করে একই টেস্ট মেথড পুনঃব্যবহার করা যায়।
  • মডুলার কোড: ডেটা এবং টেস্ট মেথড আলাদাভাবে সংজ্ঞায়িত করার সুযোগ।
  • সহজ ডিবাগিং: প্রতিটি ইনপুট সেটের জন্য পৃথক টেস্ট রান করে ডিবাগিং সহজ করে।

সংক্ষেপে

TestNG-র @DataProvider অ্যানোটেশন ডেটা-ড্রিভেন টেস্টিংয়ের একটি অত্যন্ত কার্যকর টুল। এটি একাধিক ইনপুট ডেটা দিয়ে টেস্ট সঞ্চালন সহজ করে এবং বড় মাপের অ্যাপ্লিকেশনে টেস্ট কভারেজ বাড়ায়।

Content added By

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


DataProvider কী?

DataProvider TestNG-এর একটি অ্যানোটেশন যা টেস্ট মেথডে একাধিক ইনপুট সরবরাহ করতে ব্যবহৃত হয়। এটি একটি মেথড, যা ডেটা রিটার্ন করে Object[][] ফরম্যাটে। এই ডেটা TestNG টেস্ট মেথডে ব্যবহার করা হয়।

DataProvider-এর গঠন:

@DataProvider(name = "dataProviderName")
public Object[][] dataProviderMethod() {
    return new Object[][] {
        {"data1", "data2"},
        {"data3", "data4"}
    };
}

DataProvider-এর মাধ্যমে ডেটা ড্রিভেন টেস্টিং উদাহরণ

উদাহরণ ১: সাধারণ ব্যবহার

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataDrivenTest {

    @DataProvider(name = "loginData")
    public Object[][] provideData() {
        return new Object[][] {
            {"user1", "pass1"},
            {"user2", "pass2"},
            {"user3", "pass3"}
        };
    }

    @Test(dataProvider = "loginData")
    public void loginTest(String username, String password) {
        System.out.println("Testing with Username: " + username + ", Password: " + password);
        // এখানে আপনি লজিক বা অ্যাসারশন যোগ করতে পারেন
    }
}

আউটপুট:
উপরের উদাহরণে, TestNG একাধিক ইনপুট দিয়ে একই টেস্ট মেথড চালায়। প্রতিবার loginTest মেথডে ভিন্ন username এবং password সরবরাহ করা হয়।


উদাহরণ ২: Excel থেকে ডেটা ব্যবহার করা

TestNG-এর DataProvider এর সাথে Apache POI লাইব্রেরি ব্যবহার করে Excel ফাইল থেকে ডেটা টেনে আনা সম্ভব।

import org.apache.poi.ss.usermodel.*;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ExcelDataDrivenTest {

    @DataProvider(name = "excelData")
    public Object[][] readExcelData() throws IOException {
        File file = new File("testData.xlsx");
        FileInputStream fis = new FileInputStream(file);
        Workbook workbook = WorkbookFactory.create(fis);
        Sheet sheet = workbook.getSheetAt(0);

        int rowCount = sheet.getLastRowNum();
        int colCount = sheet.getRow(0).getLastCellNum();

        Object[][] data = new Object[rowCount][colCount];

        for (int i = 1; i <= rowCount; i++) {
            Row row = sheet.getRow(i);
            for (int j = 0; j < colCount; j++) {
                data[i - 1][j] = row.getCell(j).toString();
            }
        }
        workbook.close();
        fis.close();
        return data;
    }

    @Test(dataProvider = "excelData")
    public void excelTest(String col1, String col2) {
        System.out.println("Column 1: " + col1 + ", Column 2: " + col2);
        // এখানে অ্যাসারশন বা টেস্ট লজিক যোগ করুন
    }
}

ব্যাখ্যা:

  • এই উদাহরণে, Excel ফাইল থেকে ডেটা পড়ে Object[][] ফরম্যাটে সংরক্ষণ করা হয়।
  • TestNG-এর DataProvider এই ডেটা টেস্ট মেথডে ব্যবহার করে।

DataProvider-এর প্যারামিটারাইজেশন

একাধিক টেস্ট মেথডে একই DataProvider ব্যবহার

একটি DataProvider একাধিক টেস্ট মেথডে ব্যবহার করা যায়। এক্ষেত্রে DataProvider-এর নাম @Test অ্যানোটেশনের dataProvider প্যারামিটারে উল্লেখ করতে হয়।

@Test(dataProvider = "loginData", dataProviderClass = DataProviderClass.class)
public void testLogin(String username, String password) {
    // Test Logic
}

DataProvider-এর সুবিধা

  • পুনরায় ব্যবহারযোগ্য টেস্ট মেথড: একই টেস্ট মেথড বিভিন্ন ইনপুট ডেটার উপর ভিত্তি করে ব্যবহার করা যায়।
  • ডেটার মডুলারিটি: ডেটাকে টেস্ট মেথড থেকে আলাদা করে ডেটা সোর্স অনুযায়ী পরিবর্তন করা সহজ।
  • Excel বা ডেটাবেস ইন্টিগ্রেশন: বহিরাগত সোর্স থেকে ডেটা পড়ে টেস্ট চালানো সম্ভব।

সারাংশ

TestNG-এর DataProvider একটি শক্তিশালী ফিচার, যা ডেটা ড্রিভেন টেস্টিংয়ের জন্য অত্যন্ত কার্যকর। এটি টেস্ট মেথডকে আরও গতিশীল এবং পুনরায় ব্যবহারযোগ্য করে তোলে। সহজ ডেটা সেট থেকে শুরু করে Excel বা ডেটাবেসের মতো জটিল সোর্স থেকেও ডেটা ব্যবহার করা সম্ভব। TestNG-এর DataProvider টেস্টিং প্রক্রিয়াকে আরও সহজ, কার্যকর, এবং স্কেলেবল করে তোলে।

Content added By

টেস্টএনজি-তে @DataProvider একটি শক্তিশালী ফিচার যা ডেটা ড্রিভেন টেস্টিং (Data-Driven Testing) সাপোর্ট করে। এটি টেস্ট মেথডকে একাধিক ইনপুট দিয়ে চালানোর সুযোগ দেয়।

@DataProvider ব্যবহার করে, একটি টেস্ট মেথড একাধিক সেট ডেটার মাধ্যমে একাধিকবার চালানো সম্ভব, যা কোড পুনরাবৃত্তি কমায় এবং টেস্টিং আরও কার্যকর করে।


@DataProvider এর বৈশিষ্ট্য

  • একই টেস্ট মেথড বিভিন্ন ইনপুট ডেটা দিয়ে চালানো যায়।
  • সহজেই বড় আকারের টেস্ট ডেটা পরিচালনা করা যায়।
  • একাধিক ইনপুট টেস্ট করার জন্য আলাদা টেস্ট মেথড লিখতে হয় না।

@DataProvider এর সিনট্যাক্স

@DataProvider(name = "dataProviderName")
public Object[][] dataProviderMethod() {
    return new Object[][] {
        {dataSet1},
        {dataSet2},
        ...
    };
}

@Test(dataProvider = "dataProviderName")
public void testMethod(Type1 arg1, Type2 arg2, ...) {
    // Test logic here
}

উদাহরণ: @DataProvider ব্যবহার

উদাহরণ ১: সাধারণ ডেটা ড্রিভেন টেস্ট

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderExample {

    @DataProvider(name = "testData")
    public Object[][] provideData() {
        return new Object[][] {
            {"Alice", 25},
            {"Bob", 30},
            {"Charlie", 35}
        };
    }

    @Test(dataProvider = "testData")
    public void testMethod(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

আউটপুট:

Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35

উদাহরণ ২: লজিক যাচাই করার জন্য @DataProvider

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class CalculatorTest {

    @DataProvider(name = "additionData")
    public Object[][] provideAdditionData() {
        return new Object[][] {
            {2, 3, 5},
            {10, 20, 30},
            {15, 15, 30}
        };
    }

    @Test(dataProvider = "additionData")
    public void testAddition(int num1, int num2, int expected) {
        int actual = num1 + num2;
        Assert.assertEquals(actual, expected, "Addition result is incorrect!");
    }
}

আউটপুট: যদি প্রত্যেক ইনপুট সেটের জন্য লজিক সঠিক থাকে, টেস্ট পাস করবে। না হলে ব্যর্থ হবে।


একাধিক @DataProvider পরিচালনা করা

একাধিক @DataProvider ব্যবহার করা সম্ভব। আলাদা আলাদা টেস্ট মেথডে আলাদা @DataProvider অ্যাসাইন করা যায়।

@DataProvider(name = "numbers")
public Object[][] numberProvider() {
    return new Object[][] {{1}, {2}, {3}};
}

@DataProvider(name = "strings")
public Object[][] stringProvider() {
    return new Object[][] {{"Test1"}, {"Test2"}, {"Test3"}};
}

@Test(dataProvider = "numbers")
public void testNumbers(int number) {
    System.out.println("Number: " + number);
}

@Test(dataProvider = "strings")
public void testStrings(String text) {
    System.out.println("Text: " + text);
}

Parameterized @DataProvider

@DataProvider ডায়নামিক প্যারামিটার গ্রহণ করতে পারে। উদাহরণস্বরূপ, যখন নির্দিষ্ট ইনপুট টেস্ট করতে হবে।

@DataProvider(name = "dynamicData")
public Object[][] provideDynamicData(Method method) {
    if (method.getName().equals("testLogin")) {
        return new Object[][] {{"admin", "admin123"}, {"user", "user123"}};
    } else if (method.getName().equals("testSignup")) {
        return new Object[][] {{"newUser", "password1"}};
    }
    return null;
}

@Test(dataProvider = "dynamicData")
public void testLogin(String username, String password) {
    System.out.println("Login with Username: " + username + ", Password: " + password);
}

@Test(dataProvider = "dynamicData")
public void testSignup(String username, String password) {
    System.out.println("Signup with Username: " + username + ", Password: " + password);
}

@DataProvider এর সুবিধা

  • বড় আকারের টেস্ট ডেটা পরিচালনা সহজ।
  • পুনরাবৃত্ত কোডের প্রয়োজনীয়তা কমে।
  • ডেটা-ভিত্তিক টেস্ট কেস তৈরি দ্রুত হয়।
  • কোড রিইউজ করার সুযোগ বাড়ে।

সারাংশ

@DataProvider টেস্টএনজি-র একটি গুরুত্বপূর্ণ ফিচার যা একাধিক ইনপুট ডেটার সাহায্যে একই টেস্ট মেথড চালানোর সুযোগ দেয়। এটি ডেটা ড্রিভেন টেস্টিং সহজতর করে এবং বড় আকারের টেস্টিং প্রজেক্টের জন্য অপরিহার্য।

Content added By

DataProvider কি?

TestNG-তে @DataProvider একটি অ্যানোটেশন, যা ডাটা ড্রিভেন টেস্টিং (Data-Driven Testing) করার জন্য ব্যবহৃত হয়। এটি টেস্ট মেথডে একাধিক ইনপুট ডাটা সরবরাহ করে। DataProvider ব্যবহার করে, একটি টেস্ট মেথড একাধিক ইনপুট ডাটার জন্য বারবার চালানো সম্ভব হয়।


DataProvider-এর বৈশিষ্ট্য

  • একাধিক ইনপুট ডাটা সরবরাহ করে একই টেস্ট মেথড পুনরায় চালানো যায়।
  • সহজেই ডাটা পরিচালনা এবং টেস্ট কেসের ফলাফল যাচাই করা যায়।
  • বিভিন্ন ধরণের ডাটা (Primitive এবং Object) ব্যবহার করা যায়।
  • DataProvider একক শ্রেণি বা আলাদা শ্রেণি থেকে ডাটা সরবরাহ করতে পারে।

DataProvider-এর সিনট্যাক্স

@DataProvider(name = "dataProviderName")
public Object[][] dataProviderMethod() {
    return new Object[][] {
        {data1, data2, ...},
        {data3, data4, ...},
    };
}

@Test(dataProvider = "dataProviderName")
public void testMethod(type1 param1, type2 param2, ...) {
    // টেস্ট লজিক
}

উদাহরণ: সিম্পল DataProvider

import org.testng.annotations.Test;
import org.testng.annotations.DataProvider;
import org.testng.Assert;

public class DataProviderExample {

    // DataProvider ডিফাইন করা
    @DataProvider(name = "additionData")
    public Object[][] provideAdditionData() {
        return new Object[][] {
            {2, 3, 5},
            {5, 7, 12},
            {10, 20, 30}
        };
    }

    // DataProvider ব্যবহার করে টেস্ট মেথড
    @Test(dataProvider = "additionData")
    public void testAddition(int num1, int num2, int expectedSum) {
        int actualSum = num1 + num2;
        Assert.assertEquals(actualSum, expectedSum, "Addition result mismatch!");
    }
}

বর্ণনা:

  • @DataProvider এর মাধ্যমে তিনটি ডাটাসেট সরবরাহ করা হয়েছে।
  • testAddition মেথড প্রতিটি ডাটাসেটের জন্য চালানো হবে।
  • Assert.assertEquals দিয়ে প্রত্যাশিত এবং প্রকৃত ফলাফল যাচাই করা হয়েছে।

উদাহরণ: আলাদা শ্রেণি থেকে DataProvider

DataProvider শ্রেণি:

import org.testng.annotations.DataProvider;

public class TestData {

    @DataProvider(name = "loginData")
    public Object[][] provideLoginData() {
        return new Object[][] {
            {"user1", "pass1"},
            {"user2", "pass2"},
            {"user3", "pass3"}
        };
    }
}

টেস্ট শ্রেণি:

import org.testng.annotations.Test;

public class LoginTest {

    @Test(dataProvider = "loginData", dataProviderClass = TestData.class)
    public void testLogin(String username, String password) {
        System.out.println("Testing login with: " + username + " and " + password);
        // এখানে লগইন ভেরিফিকেশন লজিক যুক্ত করা যাবে।
    }
}

বর্ণনা:

  • TestData ক্লাসে DataProvider ডিফাইন করা হয়েছে।
  • LoginTest ক্লাসে DataProvider ব্যবহার করে টেস্ট মেথড চালানো হয়েছে।
  • dataProviderClass ব্যবহার করে আলাদা শ্রেণি থেকে DataProvider কল করা হয়েছে।

DataProvider-এর সুবিধা

  • একই টেস্ট মেথড বারবার লেখার প্রয়োজন হয় না।
  • ডাটা পরিবর্তনের মাধ্যমে সহজেই টেস্ট কেস স্কেল করা যায়।
  • জটিল ইনপুট ডাটার জন্য এটি একটি কার্যকরী সমাধান।

উপসংহার

TestNG-তে @DataProvider দিয়ে টেস্টিং সহজ এবং কার্যকর। এটি ডাটা ড্রিভেন টেস্টিংয়ের জন্য অত্যন্ত উপযোগী, বিশেষ করে যখন বিভিন্ন ইনপুট দিয়ে একই টেস্ট মেথড বারবার চালানো প্রয়োজন।

Content added By
Promotion

Are you sure to start over?

Loading...