【发布时间】:2013-12-03 17:34:37
【问题描述】:
我想编写一个 JUnit 测试来验证特定对象是否可以被 GWT RPC 过程成功序列化。我该怎么做?我正在使用 GWT 2.4 和 JUnit 4.8.1。
谢谢,- 戴夫
【问题讨论】:
-
您升级到 GWT 2.6 还是 2.7?似乎接受的答案不再起作用。您找到在最新 GWT 中测试的方法了吗?
标签: gwt serialization junit
我想编写一个 JUnit 测试来验证特定对象是否可以被 GWT RPC 过程成功序列化。我该怎么做?我正在使用 GWT 2.4 和 JUnit 4.8.1。
谢谢,- 戴夫
【问题讨论】:
标签: gwt serialization junit
接受的答案不检查无参数构造函数;以下是:
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);
}
}
【讨论】:
HostedModeClientOracle、HasValues、HasValuesCommandSink 和 CommandServerSerializationStreamWriter 已被删除。
找到了答案。这是
@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());
}
}
【讨论】:
HostedModeClientOracle、HasValues、HasValuesCommandSink 和 CommandServerSerializationStreamWriter 已被删除。