Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为Kryo序列化程序编写单元测试_Java_Unit Testing_Serialization_Junit_Kryo - Fatal编程技术网

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

Java 为Kryo序列化程序编写单元测试,java,unit-testing,serialization,junit,kryo,Java,Unit Testing,Serialization,Junit,Kryo,我已经编写了一系列序列化类,希望为它们编写单元测试,基本上是测试对象是否序列化和未序列化,结果对象是否相等。然而,我不知道如何进行序列化。我把它和storm一起使用,这部分似乎神奇地自行发生了,所以我不确定我知道怎么做 有输入和输出对象可以读取和写入流,但我不确定如何将输出转换为输入 这里有一个基本的序列化程序作为示例 import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; impor

我已经编写了一系列序列化类,希望为它们编写单元测试,基本上是测试对象是否序列化和未序列化,结果对象是否相等。然而,我不知道如何进行序列化。我把它和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()  
        );
    }
}
import com.esotericsoftware.kryo.kryo;
导入com.esotericsoftware.kryo.Serializer;
导入com.esotericsoftware.kryo.io.Input;
导入com.esotericsoftware.kryo.io.Output;
公共类BasicSerialiser扩展序列化程序{
@凌驾
公共无效写入(Kryo-Kryo,输出,基本对象对象){
super.write(kryo,output,messageSummary);
output.writeString(对象名称);
可写输出(对象时间戳);
output.writebolean(obj.isOrange());
}
@凌驾
公共基本对象读取(Kryo Kryo,输入,类aClass){
返回新的BasicObject(
input.readString(),
input.readDouble(),
input.readBoolean()
);
}
}
试试这个:

它帮助了我

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

您可以确保kryo使用您的序列化程序作为断言之一,使用如下内容:

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