测试GWT序列化
我想编写一个JUnit测试来验证GWT RPC过程是否可以成功序列化特定对象。我该怎么做?我正在使用GWT2.4和JUnit4.8.1测试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
谢谢,-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中进行测试的方法?