Struts 2 অ্যাপ্লিকেশন ডেভেলপ করার সময়, অ্যাকশন ক্লাসগুলি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য JUnit এর মাধ্যমে Unit Testing করা অত্যন্ত গুরুত্বপূর্ণ। JUnit একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশনগুলোতে ইউনিট টেস্টিং করার জন্য ব্যবহৃত হয়। Struts 2 অ্যাকশন ক্লাসের টেস্টিং করতে JUnit ব্যবহার করা খুবই সহজ এবং কার্যকরী।
এখানে, আমরা Struts 2 Action Testing এর জন্য JUnit এবং Struts 2 Test প্লাগইন ব্যবহার করার পদ্ধতি দেখব।
Struts 2 অ্যাকশন টেস্টিং করার জন্য প্রয়োজনীয় সেটআপ
- JUnit Dependency Setup
- Struts 2 Test Plugin Dependency Setup
- JUnit Test Class তৈরি করা
- TestRunner Class তৈরি করা
- Action Testing
১. JUnit Dependency Setup
প্রথমে JUnit ডিপেনডেন্সি pom.xml ফাইলে যোগ করতে হবে।
<dependencies>
<!-- JUnit Dependency -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
২. Struts 2 Test Plugin Dependency Setup
Struts 2 Test Plugin আপনার Struts 2 অ্যাকশন ক্লাসের টেস্টিংয়ের জন্য একটি খুবই গুরুত্বপূর্ণ প্লাগইন। এটি StrutsTestCase ক্লাস সরবরাহ করে, যা Struts 2 অ্যাকশন ক্লাসের টেস্টিং করার জন্য প্রয়োজনীয় ফিচার প্রদান করে।
<dependencies>
<!-- Struts 2 Test Plugin -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-test-plugin</artifactId>
<version>2.5.22</version> <!-- Struts 2 এর ভার্সন অনুসারে সংস্করণ নির্বাচন করুন -->
<scope>test</scope>
</dependency>
</dependencies>
৩. JUnit Test Class তৈরি করা
আপনার Action ক্লাসের জন্য একটি JUnit Test ক্লাস তৈরি করুন। এখানে একটি উদাহরণ দেখানো হয়েছে যেখানে একটি Struts 2 Action ক্লাসের টেস্টিং করা হবে।
উদাহরণ: Action Class
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private String name;
// Getter and Setter for name
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() {
if (name == null || name.isEmpty()) {
addActionError("Name cannot be empty");
return ERROR;
}
return SUCCESS;
}
}
Action ক্লাস ব্যাখ্যা:
- HelloWorldAction অ্যাকশন ক্লাসে name প্রপার্টি আছে, এবং
execute()মেথডটি name ভ্যালিডেশন চেক করে। - যদি name ফিল্ড খালি থাকে, তবে এটি ERROR রিটার্ন করবে, অন্যথায় SUCCESS রিটার্ন করবে।
JUnit Test Class
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class HelloWorldActionTest {
private HelloWorldAction action;
@Before
public void setUp() {
// Test action class instance initialization
action = new HelloWorldAction();
}
@Test
public void testExecuteWithValidName() {
action.setName("John");
// execute() মেথড কল করা
String result = action.execute();
// নিশ্চিত করা যে রিটার্ন ভ্যালু SUCCESS
assertEquals(ActionSupport.SUCCESS, result);
}
@Test
public void testExecuteWithEmptyName() {
action.setName("");
// execute() মেথড কল করা
String result = action.execute();
// নিশ্চিত করা যে রিটার্ন ভ্যালু ERROR
assertEquals(ActionSupport.ERROR, result);
}
}
কোড ব্যাখ্যা:
- setUp() মেথডে HelloWorldAction অ্যাকশন ক্লাসের একটি ইনস্ট্যান্স তৈরি করা হয়েছে।
- testExecuteWithValidName() মেথডে, একটি বৈধ নাম (যেমন "John") সেট করা হয়েছে এবং execute() মেথড কল করা হয়েছে, তারপরে এটি নিশ্চিত করা হয়েছে যে SUCCESS রিটার্ন হয়েছে।
- testExecuteWithEmptyName() মেথডে, একটি খালি নাম সেট করা হয়েছে এবং execute() মেথড কল করার পর নিশ্চিত করা হয়েছে যে ERROR রিটার্ন হয়েছে।
৪. TestRunner Class তৈরি করা
Struts 2-এ অ্যাকশন টেস্ট করার জন্য StrutsTestCase ব্যবহার করা যায়, যা Struts 2 ফ্রেমওয়ার্কের টেস্ট কেস চলানোর জন্য প্রয়োজনীয় সহায়ক ক্লাস সরবরাহ করে।
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.junit.StrutsTestCase;
public class HelloWorldActionTest extends StrutsTestCase {
private HelloWorldAction action;
@Override
public void setUp() throws Exception {
super.setUp();
action = new HelloWorldAction();
}
public void testExecuteWithValidName() {
action.setName("John");
String result = action.execute();
assertEquals(ActionSupport.SUCCESS, result);
}
public void testExecuteWithEmptyName() {
action.setName("");
String result = action.execute();
assertEquals(ActionSupport.ERROR, result);
}
}
কোড ব্যাখ্যা:
- StrutsTestCase কনফিগারেশন ব্যবহার করা হয়েছে যা Struts 2 অ্যাকশন টেস্ট করার জন্য প্রস্তুত থাকে।
- setUp() মেথডে action ইনস্ট্যান্স তৈরি করা হয়েছে এবং Struts 2 প্লাগইন দ্বারা execute() মেথড চালানো হয়েছে।
৫. Action Testing Results
JUnit টেস্ট কেস চালানোর পর, আপনি দেখতে পাবেন যে যদি অ্যাকশন ক্লাসের execute() মেথড সঠিকভাবে কাজ করে, তবে তার ফলাফল SUCCESS বা ERROR রিটার্ন করবে। আপনি JUnit কনসোলে টেস্টের ফলাফল দেখতে পারবেন।
উপসংহার
Struts 2 অ্যাপ্লিকেশনে JUnit ব্যবহার করে অ্যাকশন ক্লাসের টেস্টিং করা খুবই গুরুত্বপূর্ণ এবং কার্যকরী। StrutsTestCase এবং JUnit এর মাধ্যমে আপনি সহজে আপনার অ্যাকশন ক্লাসের ব্যবসায়িক লজিক পরীক্ষা করতে পারেন এবং নিশ্চিত করতে পারেন যে অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করছে। Action ক্লাসের execute() মেথড এবং ভ্যালিডেশন প্রক্রিয়া নিশ্চিত করতে JUnit ব্যবহার করার মাধ্যমে কোডের মান উন্নত করা সম্ভব।
Read more