JUnit হল Java এর জন্য একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা ইউনিট টেস্টিং সহজ করে তোলে। Parameterized Tests JUnit-এ এমন একটি বৈশিষ্ট্য যা আপনাকে একই টেস্ট মেথডকে একাধিক ইনপুটের সাথে একাধিকবার চালানোর সুযোগ দেয়। এর মাধ্যমে আপনি একটি টেস্ট মেথডে ভিন্ন ভিন্ন ইনপুট দিয়ে একাধিক টেস্ট চালাতে পারেন, যাতে কোডের ব্যাবহারিকতা এবং ভেরিয়েবল টেস্টিং নিশ্চিত করা যায়।
Parameterized Tests ব্যবহার করে আপনি অনেকগুলো ডাটা সেটের সাথে একই টেস্ট মেথডের কার্যকারিতা পরীক্ষা করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা এবং বিভিন্ন ইনপুটের সাথে টেস্ট চালানোকে সহজ করে তোলে।
Parameterized Test JUnit 4 (এবং পরবর্তী সংস্করণে) একটি টেস্ট মেথডকে একাধিক বার চালানোর সুযোগ দেয়, যেখানে প্রতিবার নতুন ডাটা সেট দেওয়া হয়। এটি বিশেষভাবে উপকারী যখন একই ধরনের পরীক্ষণ একাধিক ডাটার সাথে করতে হয়, যেমন ম্যাথেমেটিক্যাল ক্যালকুলেশন, ডাটা ফরম্যাট কনভার্সন ইত্যাদি।
JUnit এর Parameterized Test কনফিগারেশনে, @RunWith(Parameterized.class) অ্যানোটেশন ব্যবহার করা হয় এবং @Parameters অ্যানোটেশন দ্বারা ইনপুট ডেটা সেট করা হয়।
এখানে একটি সহজ উদাহরণ দেখা যাবে, যেখানে addition ফাংশনকে বিভিন্ন ইনপুট দিয়ে টেস্ট করা হবে।
AdditionTest.java
import org.junit.runner.RunWith;
import org.junit.Test;
import org.junit.runners.Parameterized;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class AdditionTest {
private int number1;
private int number2;
private int expectedSum;
// Constructor
public AdditionTest(int number1, int number2, int expectedSum) {
this.number1 = number1;
this.number2 = number2;
this.expectedSum = expectedSum;
}
// Parameters method to provide data for the test
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 1, 2, 3 }, // 1 + 2 = 3
{ 2, 3, 5 }, // 2 + 3 = 5
{ 4, 5, 9 }, // 4 + 5 = 9
{ 7, 8, 15 } // 7 + 8 = 15
});
}
// Test method to test addition
@Test
public void testAddition() {
assertEquals(expectedSum, number1 + number2);
}
}
এখানে:
JUnit 5 এ ParameterizedTest এবং @ValueSource বা @MethodSource ব্যবহার করা হয়। এখানে JUnit 5 এর সাথে একই addition ফাংশনের টেস্ট দেখানো হয়েছে।
AdditionTest.java
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class AdditionTest {
@ParameterizedTest
@ValueSource(ints = {1, 2, 4, 7}) // Parameters
public void testAddition(int number) {
assertEquals(10, number + 9); // Testing 9 + parameter
}
}
এখানে:
@MethodSource ব্যবহার করে একটি কাস্টম ডেটা প্রোভাইডার ফাংশন তৈরি করা যেতে পারে।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class AdditionTest {
@ParameterizedTest
@MethodSource("additionData") // Custom method for parameters
public void testAddition(int number1, int number2, int expectedSum) {
assertEquals(expectedSum, number1 + number2);
}
// Custom method to provide data
static Object[][] additionData() {
return new Object[][] {
{1, 2, 3}, // 1 + 2 = 3
{2, 3, 5}, // 2 + 3 = 5
{4, 5, 9}, // 4 + 5 = 9
{7, 8, 15} // 7 + 8 = 15
};
}
}
এখানে:
additionData
) ব্যবহার করে।Parameterized Tests JUnit-এ এমন একটি সুবিধা যা আপনাকে একাধিক ইনপুটের সাথে একাধিক টেস্ট চালানোর সুযোগ দেয়। JUnit 4 এবং JUnit 5 উভয়ই Parameterized Test সাপোর্ট করে। JUnit 5-এ @ValueSource এবং @MethodSource অ্যানোটেশন ব্যবহার করে আপনি ডেটা প্রদান করতে পারেন। এটি কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং কোডের ভেরিয়েবল ইনপুটের জন্য সহজে টেস্টিং করা যায়।
JUnit হল একটি Java টেস্টিং ফ্রেমওয়ার্ক যা আপনাকে ইউনিট টেস্ট লিখতে, পরিচালনা করতে এবং ফলাফল বিশ্লেষণ করতে সাহায্য করে। Parameterized Tests হল JUnit এর একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে একাধিক ইনপুট এবং আউটপুটের জন্য একই টেস্ট মেথড ব্যবহার করে টেস্ট করার সুবিধা দেয়। এটি বিশেষত যখন একই ধরনের টেস্ট একাধিক ভ্যালুর জন্য চালানো প্রয়োজন, তখন কার্যকরী।
Parameterized Tests হল একটি বিশেষ ধরনের টেস্ট যেখানে একটি একক টেস্ট মেথড একাধিক ইনপুটের সাথে রান হয়। এর মাধ্যমে, একই লজিকাল টেস্ট একাধিক ভ্যালুর উপর পরীক্ষা করা যায়। এর ফলে কোডের পুনরাবৃত্তি কমে এবং টেস্টের গঠন আরও পরিষ্কার হয়।
JUnit 4 তে Parameterized Tests ব্যবহারের জন্য @RunWith(Parameterized.class) এবং @Parameters অ্যানোটেশন ব্যবহার করা হয়।
ধরা যাক, আপনি একটি মেথড পরীক্ষা করতে চান যেটি দুটি সংখ্যা যোগ করে। আমরা এই টেস্টের জন্য parameterized test লিখব।
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class CalculatorTest {
private int num1;
private int num2;
private int expectedSum;
// Constructor to initialize the test parameters
public CalculatorTest(int num1, int num2, int expectedSum) {
this.num1 = num1;
this.num2 = num2;
this.expectedSum = expectedSum;
}
// Parameters: providing different sets of values to test
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 1, 2, 3 }, // Test case 1: 1 + 2 = 3
{ 3, 4, 7 }, // Test case 2: 3 + 4 = 7
{ -1, 1, 0 }, // Test case 3: -1 + 1 = 0
{ -5, -5, -10 } // Test case 4: -5 + -5 = -10
});
}
// Test method
@Test
public void testAdd() {
Calculator calculator = new Calculator();
assertEquals(expectedSum, calculator.add(num1, num2));
}
}
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
এখানে, testAdd() মেথডটি প্রতি ইনপুট সেটের জন্য চলে এবং প্রত্যাশিত যোগফল পরীক্ষা করে।
Parameterized Tests JUnit এর একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে একাধিক ইনপুটের জন্য একই টেস্ট মেথড ব্যবহার করতে সহায়তা করে। এটি কোড পুনরাবৃত্তি কমায়, টেস্ট কভারেজ বৃদ্ধি করে এবং পারফরম্যান্স উন্নত করতে সহায়ক। JUnit এর @RunWith(Parameterized.class) এবং @Parameters অ্যানোটেশন ব্যবহার করে আপনি সহজেই প্যারামিটারাইজড টেস্ট লিখতে পারবেন এবং আপনার কোডের বিভিন্ন পরিস্থিতি পরীক্ষা করতে পারবেন।
JUnit হল Java টেস্টিং ফ্রেমওয়ার্ক যা ইউনিট টেস্ট তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। JUnit 5 এর নতুন বৈশিষ্ট্যগুলির মধ্যে একটি হল Parameterized Tests, যা আপনাকে একটি টেস্ট মেথডে একাধিক ইনপুট প্রদান করার সুযোগ দেয়, ফলে একাধিক ডেটা নিয়ে একাধিক টেস্ট চালানো সহজ হয়। এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা এবং টেস্টিং ক্ষমতা বৃদ্ধি পায়।
এই টিউটোরিয়ালে আমরা @ParameterizedTest এবং @ValueSource এনোটেশন নিয়ে আলোচনা করব, যেগুলি JUnit 5 এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য।
@ParameterizedTest এনোটেশন ব্যবহার করে আপনি একটি টেস্ট মেথডে একাধিক ইনপুট প্রদান করতে পারেন। এটি বিভিন্ন ডেটার উপর টেস্ট করার জন্য একক টেস্ট মেথডকে পুনরায় চালানোর সুযোগ দেয়। এর মাধ্যমে একই লজিক একাধিক ভিন্ন ইনপুটের জন্য পরীক্ষা করা সম্ভব।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class CalculatorTest {
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5})
void testAddition(int number) {
Calculator calculator = new Calculator();
int result = calculator.add(number, 2);
assertEquals(number + 2, result);
}
}
এখানে, @ParameterizedTest ব্যবহার করে testAddition মেথডের মাধ্যমে একাধিক ইনপুট (১ থেকে ৫) প্রদান করা হয়েছে। প্রতিটি ইনপুটের জন্য টেস্ট চলবে এবং সঠিক ফলাফল যাচাই করা হবে।
@ValueSource এনোটেশন দ্বারা আপনি টেস্ট মেথডে একাধিক ইনপুট সরবরাহ করতে পারেন। এটি বিভিন্ন প্রকার ডেটা যেমন int
, String
, boolean
, ইত্যাদি নিয়ে কাজ করতে পারে।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class StringUtilsTest {
@ParameterizedTest
@ValueSource(strings = {"apple", "banana", "cherry"})
void testStringLength(String fruit) {
assertTrue(fruit.length() > 3);
}
}
এখানে, @ValueSource(strings = {...}) ব্যবহার করে testStringLength মেথডে তিনটি ভিন্ন স্ট্রিং (apple
, banana
, cherry
) প্রদান করা হয়েছে এবং যাচাই করা হচ্ছে যে প্রত্যেকটি স্ট্রিংয়ের দৈর্ঘ্য ৩ এর বেশি।
@ValueSource এনোটেশন বিভিন্ন ডেটা টাইপ সাপোর্ট করে, যেমন:
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void testEvenNumbers(int number) {
assertTrue(number % 2 == 0);
}
@ParameterizedTest
@ValueSource(doubles = {1.0, 2.5, 3.0})
void testPositiveNumbers(double number) {
assertTrue(number > 0);
}
@ParameterizedTest
@ValueSource(booleans = {true, false})
void testBooleanValues(boolean value) {
assertNotNull(value);
}
এখানে, @ValueSource এর মাধ্যমে int, double, এবং boolean ধরনের ইনপুট টেস্ট করা হয়েছে।
যদি আপনাকে একাধিক ভ্যালুতে টেস্ট করতে হয়, যেমন String
এবং int
একসাথে, তবে @CsvSource ব্যবহার করা যেতে পারে। এটি একাধিক ইনপুট কপি করে একটি সিঙ্গল টেস্ট মেথডে প্রদান করতে সহায়তা করে।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
public class CalculatorTest {
@ParameterizedTest
@CsvSource({"apple, 5", "banana, 6", "cherry, 7"})
void testFruitLength(String fruit, int length) {
assertEquals(length, fruit.length());
}
}
এখানে, @CsvSource ব্যবহার করে String
এবং int
দুইটি ইনপুট প্রদান করা হচ্ছে।
@MethodSource ব্যবহার করে আপনি একটি কাস্টম মেথড থেকে ইনপুট সংগ্রহ করতে পারেন, যা ডেটা প্রদান করবে। এটি বিশেষ করে যখন আপনাকে ডাইনামিক ডেটা প্রয়োজন হয়।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.stream.Stream;
public class CalculatorTest {
@ParameterizedTest
@MethodSource("provideNumbers")
void testAddition(int number, int expected) {
Calculator calculator = new Calculator();
assertEquals(expected, calculator.add(number, 2));
}
static Stream<org.junit.jupiter.params.provider.Arguments> provideNumbers() {
return Stream.of(
org.junit.jupiter.params.provider.Arguments.of(1, 3),
org.junit.jupiter.params.provider.Arguments.of(2, 4),
org.junit.jupiter.params.provider.Arguments.of(3, 5)
);
}
}
এখানে, @MethodSource এনোটেশন ব্যবহার করে provideNumbers মেথড থেকে ডেটা নেওয়া হচ্ছে। Stream ব্যবহার করে কাস্টম ডেটা প্রদান করা হচ্ছে।
JUnit 5 এ @ParameterizedTest এবং @ValueSource এনোটেশন ব্যবহারের মাধ্যমে আমরা একাধিক ইনপুটের জন্য একটি টেস্ট মেথড চালাতে পারি। এটি ডেটা ড্রিভেন টেস্টিংকে সহজতর করে এবং @ValueSource এবং @MethodSource এর মাধ্যমে ডেটার বিভিন্ন ধরন প্রক্রিয়া করা যায়। এছাড়া, @CsvSource বা @MethodSource ব্যবহার করে কাস্টম ডেটা প্রদান করতে পারা যায়।
এগুলো JUnit 5 এর শক্তিশালী ফিচার যা টেস্টিং প্রক্রিয়াকে আরও কার্যকরী এবং স্কেলেবল করে তোলে।
JUnit হল একটি জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক যা Java কোডের ইউনিট টেস্ট লেখার জন্য ব্যবহৃত হয়। এটি কোডের নির্ভরযোগ্যতা এবং সঠিকতা নিশ্চিত করতে সহায়তা করে। JUnit 5 এর সাথে, আপনি টেস্ট কেসে complex test data যোগ করতে @MethodSource এবং @CsvSource অ্যানোটেশন ব্যবহার করতে পারেন। এই অ্যানোটেশনগুলির মাধ্যমে আপনি টেস্টের জন্য বিভিন্ন ধরনের ডাটা প্রোভাইড করতে পারেন, যা টেস্টিং প্রক্রিয়াকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
এই টিউটোরিয়ালে, আমরা @MethodSource এবং @CsvSource অ্যানোটেশন ব্যবহার করে কিভাবে complex test data যোগ করা যায়, তা দেখব।
@MethodSource অ্যানোটেশন ব্যবহার করে আপনি টেস্টের জন্য ডাটা প্রোভাইড করতে পারেন একটি মেথড থেকে, যা টেস্টের জন্য প্রোপার ডাটা রিটার্ন করবে। এটি ডাইনামিক ডাটা সোর্স তৈরির জন্য উপকারী, যেখানে আপনি বিভিন্ন টেস্ট কেসের জন্য ভিন্ন ভিন্ন ডাটা ব্যবহার করতে পারেন।
ধরা যাক, আমাদের একটি Calculator ক্লাস আছে এবং আমরা এটিতে কিছু মেথড টেস্ট করতে চাই।
Calculator.java:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
CalculatorTest.java:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.MethodSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.stream.Stream;
public class CalculatorTest {
// @MethodSource for providing test data
@Test
@MethodSource("provideDataForAddition")
public void testAddition(int a, int b, int expected) {
Calculator calculator = new Calculator();
int result = calculator.add(a, b);
assertEquals(expected, result);
}
// Method providing test data
private static Stream<org.junit.jupiter.params.provider.Arguments> provideDataForAddition() {
return Stream.of(
org.junit.jupiter.params.provider.Arguments.arguments(1, 2, 3),
org.junit.jupiter.params.provider.Arguments.arguments(5, 10, 15),
org.junit.jupiter.params.provider.Arguments.arguments(0, 0, 0)
);
}
}
এখানে, @MethodSource অ্যানোটেশন testAddition মেথডে ব্যবহার করা হয়েছে এবং provideDataForAddition() মেথডটি ডাটা প্রোভাইড করছে। এইভাবে, একাধিক ডাটা সেট থেকে টেস্ট চালানো সম্ভব হচ্ছে।
@CsvSource অ্যানোটেশন ব্যবহার করে আপনি টেস্টের জন্য CSV ফরম্যাটে ডাটা প্রোভাইড করতে পারেন। এটি বিশেষভাবে দরকারী যখন আপনি একাধিক ডাটা ভ্যালু থেকে টেস্ট করতে চান।
ধরা যাক, আমাদের একটি StringUtility ক্লাস আছে যা দুটি স্ট্রিংয়ের মধ্যে যোগফল বের করার কাজ করে।
StringUtility.java:
public class StringUtility {
public String concatenate(String str1, String str2) {
return str1 + str2;
}
}
StringUtilityTest.java:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class StringUtilityTest {
// @CsvSource for providing complex test data
@ParameterizedTest
@CsvSource({
"'Hello', 'World', 'HelloWorld'",
"'Java', 'UnitTest', 'JavaUnitTest'",
"'JUnit', '5', 'JUnit5'"
})
public void testConcatenate(String str1, String str2, String expected) {
StringUtility utility = new StringUtility();
String result = utility.concatenate(str1, str2);
assertEquals(expected, result);
}
}
এখানে, @CsvSource অ্যানোটেশন ব্যবহার করে আপনি একাধিক String ইনপুট এবং তাদের প্রত্যাশিত আউটপুট দিয়ে টেস্ট কেসটি চালাচ্ছেন। CSV ফরম্যাটে ডাটা প্রদান করা হয়েছে যেখানে কমা দিয়ে ইনপুট এবং আউটপুট পৃথক করা হয়েছে।
Feature | @MethodSource | @CsvSource |
---|---|---|
Data Source Type | একটি মেথড থেকে ডাটা প্রোভাইড করা হয় | CSV স্ট্রিং থেকে ডাটা প্রোভাইড করা হয় |
Usage | সাধারণত বড় বা কাস্টম ডাটা সোর্সের জন্য ব্যবহার করা হয় | ছোট ও সাধারণ ডাটা সোর্সের জন্য সহজতর ব্যবহৃত হয় |
Data Format | মেথড আর্গুমেন্ট এবং আর্গুমেন্টের মাধ্যমে ডাটা প্রদান | CSV স্ট্রিং (কমা দ্বারা পৃথক) |
Complexity | কাস্টম লজিক ব্যবহার করা যায় | সাধারণ ডাটা ম্যানিপুলেশন |
ধরা যাক, আমাদের দুটি ভিন্ন ইনপুট প্যারামিটার দিয়ে টেস্ট করতে হবে এবং প্রত্যাশিত আউটপুট সুনির্দিষ্ট করতে হবে। এই ক্ষেত্রে @CsvSource অ্যানোটেশন একাধিক ইনপুট প্যারামিটার এবং তাদের প্রত্যাশিত ফলাফল একটি সহজ উপায়ে প্রোভাইড করতে সহায়তা করে।
@ParameterizedTest
@CsvSource({
"2, 3, 5",
"5, 10, 15",
"0, 0, 0"
})
public void testAddition(int a, int b, int expected) {
Calculator calculator = new Calculator();
assertEquals(expected, calculator.add(a, b));
}
এখানে, @CsvSource অ্যানোটেশন তিনটি ভিন্ন ইনপুট (অ্যাডিশন টেস্ট) থেকে টেস্ট চালাবে।
JUnit টেস্টিং ফ্রেমওয়ার্কে @MethodSource এবং @CsvSource অ্যানোটেশন ব্যবহার করে complex test data সহজে যোগ করা যায়। @MethodSource টেস্ট ডেটা একটি মেথড থেকে এনে টেস্ট করতে সহায়তা করে, যেখানে @CsvSource সরাসরি CSV ফরম্যাটে ডাটা প্রদান করে। উভয় অ্যানোটেশনই JUnit 5 এর প্যারামিটারাইজড টেস্টিংয়ের জন্য অত্যন্ত কার্যকরী এবং নমনীয়ভাবে একাধিক ডাটা প্যারামিটার দিয়ে টেস্ট সম্পাদন করতে সহায়তা করে।
JUnit একটি জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় ইউনিট টেস্ট তৈরি এবং চালাতে ব্যবহৃত হয়। JUnit এর Parameterized Test একটি শক্তিশালী ফিচার যা আপনাকে একাধিক ইনপুট ভ্যালু দিয়ে একাধিক টেস্ট কেস চালানোর সুযোগ দেয়, এবং একই টেস্ট মেথডের মাধ্যমে একাধিক ডেটা পরীক্ষা করা যায়।
Parameterized Test-এর মাধ্যমে, আপনি একাধিক ভ্যালু দিয়ে টেস্ট চালাতে পারেন, যেটি বিশেষভাবে কার্যকর যখন আপনাকে একই টেস্টে বিভিন্ন ইনপুট দিয়ে একই লজিক পরীক্ষা করতে হয়।
এই টিউটোরিয়ালে, আমরা JUnit Parameterized Test এর সাহায্যে Multiple Input Values পরীক্ষা করার একটি উদাহরণ দেখাবো।
JUnit Parameterized Test একটি স্পেশাল অ্যানোটেশন ব্যবহার করে, যেমন @RunWith(Parameterized.class) এবং @Parameters। @RunWith(Parameterized.class) অ্যানোটেশন দিয়ে আমরা JUnit-কে জানিয়ে দেই যে, এই টেস্ট ক্লাসটি প্যারামিটারাইজড টেস্ট হিসেবে চলবে এবং @Parameters অ্যানোটেশন দ্বারা প্যারামিটারাইজড ইনপুট দেওয়া হয়।
ধরা যাক, আমাদের একটি সিম্পল Calculator ক্লাস রয়েছে যা দুটি নাম্বারের যোগফল হিসাব করে:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
এখন, আমরা Calculator ক্লাসের add
মেথডটি বিভিন্ন ইনপুট দিয়ে পরীক্ষা করতে চাই। আমরা JUnit Parameterized Test ব্যবহার করে একাধিক ইনপুটের মাধ্যমে এই মেথডটি পরীক্ষা করবো।
import org.junit.runner.RunWith;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class CalculatorTest {
private int input1;
private int input2;
private int expectedResult;
private Calculator calculator = new Calculator();
// Constructor to initialize the input parameters
public CalculatorTest(int input1, int input2, int expectedResult) {
this.input1 = input1;
this.input2 = input2;
this.expectedResult = expectedResult;
}
// Test method
@Test
public void testAdd() {
assertEquals(expectedResult, calculator.add(input1, input2));
}
// Parameters: Test cases with different inputs
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 1, 1, 2 }, // Test case 1
{ 2, 3, 5 }, // Test case 2
{ 5, 5, 10 }, // Test case 3
{ -1, -1, -2 } // Test case 4
});
}
}
Arrays.asList
) প্রদান করে, যাতে প্রত্যেক টেস্টের জন্য ইনপুট প্রদান করা হয়।add()
মেথডটিকে টেস্ট করে।এখন আপনি যখন এই টেস্ট ক্লাসটি চালাবেন, JUnit প্রতিটি প্যারামিটারাইজড ইনপুটের জন্য add
মেথডটি পরীক্ষা করবে এবং প্রত্যাশিত ফলাফল চেক করবে।
এখানে চারটি আলাদা টেস্ট কেস থাকবে, যেগুলি একে একে চালানো হবে:
1 + 1 = 2
2 + 3 = 5
5 + 5 = 10
-1 + -1 = -2
Test run started
Test case 1: Passed
Test case 2: Passed
Test case 3: Passed
Test case 4: Passed
Test run finished
এখানে, প্রত্যেকটি ইনপুটের জন্য add
মেথডটি পরীক্ষা করা হয়েছে এবং প্রত্যাশিত ফলাফল যথাযথভাবে পাওয়া গেছে।
JUnit Parameterized Test একটি শক্তিশালী টুল যা আপনাকে একই টেস্ট মেথডের মাধ্যমে বিভিন্ন ইনপুট পরীক্ষা করতে সাহায্য করে। এটি কোডের পুনরাবৃত্তি কমায় এবং একটি সাধারণভাবে একাধিক টেস্ট কেস পরিচালনা করার সুযোগ দেয়। বিভিন্ন ধরনের ইনপুট ভ্যালুর সাথে টেস্ট চালানো, JUnit টেস্টিং প্রক্রিয়াকে আরও কার্যকরী এবং নির্ভুল করে তোলে।
Read more