我已经编写了一堆序列化类,并且想要为它们编写单元测试,基本上是为了测试对象是否已序列化和未序列化,从而将生成的对象视为相等。我不确定如何进行序列化。我正在用它来暴风雨,那部分似乎是神奇地发生,所以我不确定我怎么知道。

有读取和写入流的Input和Output对象,但是我不确定如何将输出转换为输入。

这是一个基本的序列化程序作为示例

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()
        );
    }
}

最佳答案

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

它帮助了我。

它提供了测试对象序列化的示例。

您可以使用以下方法确保kryo使用序列化器作为断言之一:

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

10-07 19:18
查看更多