JUnit হল Java এর একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক, যা ইউনিট টেস্ট লেখার জন্য ব্যবহৃত হয়। Gson টেস্ট করতে হলে, JUnit এর মাধ্যমে আপনি JSON ডেটাকে Java অবজেক্টে এবং Java অবজেক্টকে JSON ডেটাতে রূপান্তর করার কার্যকারিতা পরীক্ষা করতে পারেন।
এখানে আমরা দেখব কিভাবে JUnit ব্যবহার করে Gson-এর Serialization এবং Deserialization টেস্ট করা যায়।
1. JUnit Test Framework Setup
JUnit 5 ব্যবহার করতে হলে আপনাকে Maven বা Gradle এর মাধ্যমে JUnit এবং Gson ডিপেনডেন্সি যোগ করতে হবে।
Maven Dependency:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
Gradle Dependency:
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
implementation 'com.google.code.gson:gson:2.8.9'
2. Test Case Example: Gson Serialization and Deserialization
ধরা যাক আমাদের একটি Person ক্লাস রয়েছে এবং আমরা Person অবজেক্টকে JSON-এ রূপান্তর করতে চাই এবং JSON ডেটা থেকে আবার Person অবজেক্টে রূপান্তর করতে চাই।
Person Class (POJO Class):
public class Person {
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
JUnit Test Case for Gson Serialization and Deserialization:
import com.google.gson.Gson;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class GsonTest {
private Gson gson = new Gson();
// Test Serialization (Java Object to JSON)
@Test
public void testSerialization() {
Person person = new Person("John", 30);
// Serialize Person object to JSON
String json = gson.toJson(person);
// Validate the JSON string contains the expected values
assertTrue(json.contains("John"));
assertTrue(json.contains("30"));
}
// Test Deserialization (JSON to Java Object)
@Test
public void testDeserialization() {
String json = "{\"name\":\"John\",\"age\":30}";
// Deserialize JSON to Person object
Person person = gson.fromJson(json, Person.class);
// Validate the Person object's properties
assertNotNull(person);
assertEquals("John", person.getName());
assertEquals(30, person.getAge());
}
// Test Deserialization with invalid JSON (Edge case)
@Test
public void testDeserializationInvalidJson() {
String invalidJson = "{\"name\":\"John\",\"age\":\"thirty\"}";
// Try to deserialize the invalid JSON
Person person = gson.fromJson(invalidJson, Person.class);
// Validate that the deserialized object is null because of type mismatch
assertNull(person);
}
}
3. Test Case Explanation
- testSerialization():
- এখানে একটি
Personঅবজেক্ট তৈরি করা হয়েছে এবংGsonব্যবহার করে JSON-এ রূপান্তর করা হয়েছে। - পরে
assertTrueব্যবহার করে পরীক্ষা করা হয়েছে যে JSON স্ট্রিং-এJohnএবং30অন্তর্ভুক্ত রয়েছে কিনা।
- এখানে একটি
- testDeserialization():
- JSON স্ট্রিং থেকে
Personঅবজেক্টে রূপান্তর করা হয়েছে। - পরে
assertNotNullএবংassertEqualsব্যবহার করে নিশ্চিত করা হয়েছে যে অবজেক্টটি সঠিকভাবে ডেসিরিয়ালাইজ হয়েছে এবং এরnameএবংageপ্রপার্টি সঠিক।
- JSON স্ট্রিং থেকে
- testDeserializationInvalidJson():
- এখানে একটি ভুল JSON স্ট্রিং ব্যবহার করা হয়েছে, যেখানে
"age"প্রপার্টি একটি স্ট্রিং ভ্যালু রয়েছে, যা একটি ইন্টিজার হওয়া উচিত। gson.fromJson()এই JSON-কেPersonক্লাসে ডেসিরিয়ালাইজ করার চেষ্টা করবে, তবে এটি সফলভাবে কাজ করবে না এবংassertNull(person)দিয়ে নিশ্চিত করা হয়েছে যে ডেসিরিয়ালাইজেশন ব্যর্থ হয়েছে।
- এখানে একটি ভুল JSON স্ট্রিং ব্যবহার করা হয়েছে, যেখানে
4. Running the Tests
JUnit 5 টেস্ট চালানোর জন্য আপনি আপনার IDE বা Maven/Gradle ব্যবহার করতে পারেন।
Maven:
mvn test
Gradle:
gradle test
IDE এর মাধ্যমে, যেমন IntelliJ IDEA বা Eclipse, আপনি সরাসরি টেস্ট রান করতে পারবেন।
5. Output
যদি সবকিছু সঠিকভাবে কাজ করে, আপনাকে নিচের মত কিছু আউটপুট দেখতে হবে:
Tests passed: 3
এবং যদি কোনো সমস্যা থাকে (যেমন JSON এর ফরম্যাট ভুল), তবে JUnit আপনার টেস্টগুলির ফলাফল দেখাবে এবং ত্রুটির বার্তা প্রদান করবে।
JUnit ব্যবহার করে Gson এর সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন কার্যকারিতা পরীক্ষা করা খুবই সহজ। আপনি JSON ডেটা এবং Java অবজেক্টের মধ্যে রূপান্তর পরীক্ষা করতে পারেন এবং এর মান যাচাই করতে পারেন। এর মাধ্যমে আপনি নিশ্চিত করতে পারেন যে আপনার JSON প্রক্রিয়াগুলি সঠিকভাবে কাজ করছে এবং আপনার অ্যাপ্লিকেশনটি প্রত্যাশিতভাবে ডেটা পরিচালনা করছে।
Read more