测试GWT序列化

测试GWT序列化,gwt,serialization,junit,Gwt,Serialization,Junit,我想编写一个JUnit测试来验证GWT RPC过程是否可以成功序列化特定对象。我该怎么做?我正在使用GWT2.4和JUnit4.8.1 谢谢,-Dave找到了答案。是的 @Test public void testObjSerializability() { final Object obj = getObject(); final HostedModeClientOracle hmco =new HostedModeClientOracle(); final Has

我想编写一个JUnit测试来验证GWT RPC过程是否可以成功序列化特定对象。我该怎么做?我正在使用GWT2.4和JUnit4.8.1


谢谢,-Dave找到了答案。是的

@Test
public void testObjSerializability() { 
    final Object obj = getObject();
    final HostedModeClientOracle hmco =new HostedModeClientOracle(); 
    final HasValues command = new ReturnCommand(); 
    final HasValuesCommandSink hvcs = new HasValuesCommandSink(command); 
    final CommandServerSerializationStreamWriter out = new CommandServerSerializationStreamWriter(hmco, hvcs); 
    try { 
        out.writeObject(obj); 
    } catch (Exception e) { 
        e.printStackTrace(System.err);
        fail("Object couldn't be serialized:" + e.getMessage());            
    }
}   

接受的答案不检查无参数构造函数;以下是:

public static void checkGwtSerializability(Object o) throws RuntimeException {
    HostedModeClientOracle hmco = new HostedModeClientOracle();
    HasValues command = new ReturnCommand();
    HasValuesCommandSink hvcs = new HasValuesCommandSink(command);
    CommandServerSerializationStreamWriter out = new CommandServerSerializationStreamWriter(hmco, hvcs);

    try {
        out.writeObject(o);
    } catch (SerializationException e) {
        throw new RuntimeException("Object not serializable: " + o + " Caused by: " + e.getMessage(), e);
    }

    try {
        o.getClass().getDeclaredConstructor();
    } catch (NoSuchMethodException e) {
        throw new RuntimeException("Object not serializable: " + o + " Caused by: " + e.getMessage(), e);
    }
}

这个测试通过了这个类:公共类MyClass实现IsSerializable{private File File;公共类MyClass(String fileName){this.File=new File(fileName);}},尽管它需要一个无参数构造函数。这里出了什么问题?从GWT 2.6或2.7开始,
HostedModeClientTrace
HasValues
HasValuesCommandSink
CommandServerSerializationStreamWriter
。这也无法检查对象的字段是否具有无参数构造函数。从GWT 2.6或2.7开始,
HostedModeClientTrace
HasValues
HasValuesCommandSink
CommandServerSerializationStreamWriter
已被删除。您是否已升级到GWT 2.6或2.7?看来被接受的答案已经不起作用了。您是否找到了在最新GWT中进行测试的方法?