JUnit এর মাধ্যমে Gson টেস্ট করা

Gson এর জন্য Unit Testing - জিসন (Gson) - Java Technologies

354

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

  1. testSerialization():
    • এখানে একটি Person অবজেক্ট তৈরি করা হয়েছে এবং Gson ব্যবহার করে JSON-এ রূপান্তর করা হয়েছে।
    • পরে assertTrue ব্যবহার করে পরীক্ষা করা হয়েছে যে JSON স্ট্রিং-এ John এবং 30 অন্তর্ভুক্ত রয়েছে কিনা।
  2. testDeserialization():
    • JSON স্ট্রিং থেকে Person অবজেক্টে রূপান্তর করা হয়েছে।
    • পরে assertNotNull এবং assertEquals ব্যবহার করে নিশ্চিত করা হয়েছে যে অবজেক্টটি সঠিকভাবে ডেসিরিয়ালাইজ হয়েছে এবং এর name এবং age প্রপার্টি সঠিক।
  3. testDeserializationInvalidJson():
    • এখানে একটি ভুল JSON স্ট্রিং ব্যবহার করা হয়েছে, যেখানে "age" প্রপার্টি একটি স্ট্রিং ভ্যালু রয়েছে, যা একটি ইন্টিজার হওয়া উচিত।
    • gson.fromJson() এই JSON-কে Person ক্লাসে ডেসিরিয়ালাইজ করার চেষ্টা করবে, তবে এটি সফলভাবে কাজ করবে না এবং assertNull(person) দিয়ে নিশ্চিত করা হয়েছে যে ডেসিরিয়ালাইজেশন ব্যর্থ হয়েছে।

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 প্রক্রিয়াগুলি সঠিকভাবে কাজ করছে এবং আপনার অ্যাপ্লিকেশনটি প্রত্যাশিতভাবে ডেটা পরিচালনা করছে।

Content added By
Promotion

Are you sure to start over?

Loading...