Тестирование GWT сериализации - PullRequest
4 голосов
/ 16 ноября 2011

Я хочу написать тест JUnit, чтобы проверить, может ли конкретный объект быть успешно сериализован процедурой GWT RPC. Как бы я это сделал? Я использую GWT 2.4 и JUnit 4.8.1.

Спасибо, - Дейв

Ответы [ 2 ]

4 голосов
/ 03 декабря 2013

Принятый ответ не проверяет конструктор без аргументов;следующее делает:

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);
    }
}
1 голос
/ 17 ноября 2011

Нашел ответ.Это

@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());            
    }
}   
...