为Kryo序列化器编写单元测试

时间:2015-03-23 16:56:20

标签: java unit-testing serialization junit kryo

我有一堆已编写的序列化类,并希望为它们编写单元测试,基本上是测试对象是否被序列化和反序列化,结果对象被认为是相等的。我不知道如何进行序列化。我在暴风雨中使用它,那部分似乎神奇地发生在我自己身上,所以我不确定我是怎么知道的。

输入和输出对象可以读取和写入流,但我不确定如何将输出转换为输入。

这里以基本序列化程序为例

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;

public class BasicSerialiser extends Serializer<BasicObject> {

    @Override
    public void write (Kryo kryo, Output output, BasicObject obj) {
        super.write(kryo, output, messageSummary);
        output.writeString(obj.name);
        output.writeDouble(obj.timestamp);
        output.writeBoolean(obj.isOrange());
    }

    @Override
    public BasicObject read(Kryo kryo, Input input, Class<BasicObject> aClass) {
        return new BasicObject(
                input.readString(),  
                input.readDouble(), 
                input.readBoolean()  
        );
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个:http://www.programcreek.com/java-api-examples/index.php?api=com.esotericsoftware.kryo.Kryo

它帮助了我。

它给出了测试对象序列化的示例。

你可以确保kryo使用你的序列化程序作为断言之一,使用类似的东西:

assertTrue(kryo.getSerializer(MyClass.class).equals(MySerializer.class));