Back to Repositories

Testing JSON Serialization Utils for InetAddress Objects in Canal

This test suite validates the JSON serialization and deserialization functionality in Canal’s JsonUtils class, focusing on InetAddress object handling. It ensures proper conversion between Java InetAddress objects and their JSON string representations.

Test Coverage Overview

The test coverage focuses on the bidirectional conversion between InetAddress objects and JSON strings.

  • Tests marshalToString method for serialization
  • Validates unmarshalFromString for deserialization
  • Verifies object equality after round-trip conversion
  • Tests with localhost address as a key test case

Implementation Analysis

The testing approach employs JUnit’s annotation-based testing pattern with direct assertion validation. The implementation demonstrates a clear single-responsibility test method that verifies both serialization and deserialization in a single cohesive test case.

The test leverages JUnit’s @Test annotation and static assertion methods for validation, following standard unit testing patterns.

Technical Details

Testing Environment:
  • JUnit testing framework
  • JsonUtils custom utility class
  • Java InetAddress standard library
  • assertEquals for assertion validation

Best Practices Demonstrated

The test demonstrates several quality testing practices:

  • Clear test method naming that describes the functionality under test
  • Proper exception handling with throws clause
  • Complete round-trip testing of serialization/deserialization
  • Single responsibility principle in test design
  • Direct and focused assertions

alibaba/canal

common/src/test/java/com/alibaba/otter/canal/common/JsonUtilsTest.java

            
package com.alibaba.otter.canal.common;

import com.alibaba.otter.canal.common.utils.JsonUtils;
import org.junit.Test;

import java.net.InetAddress;

import static org.junit.Assert.assertEquals;

public class JsonUtilsTest {
    @Test
    public void marshalToString() throws Exception {
        InetAddress address = InetAddress.getByName("localhost");

        String json = JsonUtils.marshalToString(address);
        assertEquals("\"localhost\"", json);

        InetAddress address1 = JsonUtils.unmarshalFromString(json, InetAddress.class);
        assertEquals(address, address1);
    }
}