java - 为 Kryo 序列化程序编写单元测试

标签 java unit-testing serialization junit kryo

我有一堆我写的序列化类,想为它们编写单元测试,基本上是为了测试一个对象是否被序列化和反序列化,结果对象是否被认为是相等的。但是我不确定如何进行序列化。我将它与 storm 一起使用,那部分似乎神奇地自行发生,所以我不确定我知道如何。

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

这里有一个基本的序列化程序作为例子

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

关于java - 为 Kryo 序列化程序编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215923/

相关文章:

c# - 如何对 "HttpContext.Current.Request.LogonUserIdentity.Name"进行单元测试?

c# - 将结果添加到 TestCaseSource

c# - XmlSerializer.Serialize异常: "The type [type] was not expected."

java - 编译正常,但运行时出现 NoClassDefFoundError

java - 使用 libgdx 的类的单元测试

java - Google App Engine 数据存储区 api 接受事务作为参数

c# - 在测试失败时运行附加清理功能(当断言失败时)

java - 通过套接字发送时对象丢失数据

c++ - 向串行端口发送和接收 int 值

java - JsonObject 和 JSONObject 有什么不同