Gson সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন এর জন্য ইউনিট টেস্ট তৈরি করা একটি গুরুত্বপূর্ণ কাজ যা নিশ্চিত করে যে আপনার JSON প্রক্রিয়া সঠিকভাবে কাজ করছে। ইউনিট টেস্টের মাধ্যমে আপনি আপনার JSON ফরম্যাটের সঠিকতা যাচাই করতে পারেন এবং নিশ্চিত হতে পারেন যে ডেটা সঠিকভাবে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ হচ্ছে।
এখানে আমি Gson সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন এর জন্য একটি ইউনিট টেস্ট তৈরির উদাহরণ দেব। আমরা JUnit ফ্রেমওয়ার্ক ব্যবহার করে এই টেস্ট তৈরি করব।
1. Maven ডিপেনডেন্সি
প্রথমে আপনার pom.xml ফাইলে Gson এবং JUnit এর ডিপেনডেন্সি যোগ করুন:
<dependencies>
<!-- Gson dependency -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
<scope>test</scope>
</dependency>
<!-- JUnit dependency -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.1</version>
<scope>test</scope>
</dependency>
</dependencies>
2. Java ক্লাস:
এখন আমরা একটি সাধারণ Java ক্লাস Person তৈরি করি এবং এর সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন এর জন্য ইউনিট টেস্ট লিখব।
public class Person {
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
3. JUnit টেস্ট ক্লাস:
এখন, JUnit ব্যবহার করে Gson এর সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন চেক করার জন্য একটি টেস্ট ক্লাস লিখব।
import com.google.gson.Gson;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class GsonSerializationTest {
private final Gson gson = new Gson();
// Unit Test for Serialization
@Test
public void testSerialization() {
// Arrange
Person person = new Person("John", 30);
// Act
String json = gson.toJson(person);
// Assert
String expectedJson = "{\"name\":\"John\",\"age\":30}";
assertEquals(expectedJson, json, "Serialization failed");
}
// Unit Test for Deserialization
@Test
public void testDeserialization() {
// Arrange
String json = "{\"name\":\"John\",\"age\":30}";
// Act
Person person = gson.fromJson(json, Person.class);
// Assert
assertNotNull(person, "Deserialization failed");
assertEquals("John", person.getName(), "Name mismatch");
assertEquals(30, person.getAge(), "Age mismatch");
}
// Unit Test for Serialization and Deserialization Round-Trip
@Test
public void testSerializationDeserializationRoundTrip() {
// Arrange
Person originalPerson = new Person("John", 30);
// Act: Serialize -> Deserialize
String json = gson.toJson(originalPerson);
Person deserializedPerson = gson.fromJson(json, Person.class);
// Assert: Check if original and deserialized objects are equal
assertEquals(originalPerson.getName(), deserializedPerson.getName(), "Name mismatch after round-trip");
assertEquals(originalPerson.getAge(), deserializedPerson.getAge(), "Age mismatch after round-trip");
}
}
ব্যাখ্যা:
testSerialization():- এখানে
Personঅবজেক্টকে Gson ব্যবহার করে JSON এ সিরিয়ালাইজ করা হচ্ছে। তারপর আমরা সিরিয়ালাইজড JSON ফরম্যাটের সাথে তুলনা করছি। যদি এটি মিল না খায়, তাহলে টেস্টটি ব্যর্থ হবে।
- এখানে
testDeserialization():- এখানে একটি JSON স্ট্রিং দিয়ে
Personঅবজেক্ট ডেসিরিয়ালাইজ করা হচ্ছে। তারপর আমরা যাচাই করছি যে ডেসিরিয়ালাইজড অবজেক্টটির ফিল্ড মান সঠিকভাবে সেট হয়েছে কিনা।
- এখানে একটি JSON স্ট্রিং দিয়ে
testSerializationDeserializationRoundTrip():- এখানে আমরা একটি
Personঅবজেক্ট সিরিয়ালাইজ করে JSON তৈরি করছি এবং তারপর সেই JSON থেকে আবারPersonঅবজেক্ট ডেসিরিয়ালাইজ করছি। এরপর, আমরা যাচাই করছি যে অরিজিনাল অবজেক্ট এবং ডেসিরিয়ালাইজড অবজেক্ট একই।
- এখানে আমরা একটি
4. JUnit টেস্ট চালানো:
যদি আপনি Maven ব্যবহার করেন, আপনি টেস্ট চালাতে পারেন:
mvn test
অথবা, আপনি IDE (যেমন IntelliJ IDEA বা Eclipse) থেকেও টেস্ট রান করতে পারেন।
5. আউটপুট:
এখন, যদি সবকিছু সঠিকভাবে কাজ করে, JUnit টেস্টগুলো সফল হবে এবং নিচের মতো আউটপুট আসবে:
Test passed: testSerialization
Test passed: testDeserialization
Test passed: testSerializationDeserializationRoundTrip
সারাংশ:
- Gson সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন এর জন্য JUnit টেস্ট তৈরি করতে, আমরা Gson এর
toJson()এবংfromJson()মেথড ব্যবহার করে সিরিয়ালাইজেশন ও ডেসিরিয়ালাইজেশন কার্যকারিতা যাচাই করি। - আমরা JUnit ব্যবহার করে পরীক্ষাগুলি লিখে যাচাই করি যে JSON ফরম্যাট সঠিক এবং ডেটা সঠিকভাবে ট্রান্সফার হচ্ছে।
- Unit tests নিশ্চিত করে যে আপনার JSON প্রক্রিয়াগুলি কাজ করছে এবং পরবর্তীতে কোড পরিবর্তন করলে তা ঠিকভাবে কাজ করবে।
Read more