java unit-testing easymock

java - Conseguir objetos simulados de EasyMock para lanzar Excepciones



easymock maven (2)

Estoy en el proceso de usar EasyMock para escribir pruebas unitarias para varias clases colaboradoras. Una de estas clases (llamémosla Foo ) abre una conexión de red a un servidor remoto y analiza la respuesta XML de los servidores en algo que el resto de las clases pueden usar.

Actualmente, mis pruebas solo abarcan escenarios en los que todo es Hunky-dory y el servidor remoto está funcionando y devolviendo XML como se esperaba. Sin embargo, sería más feliz si pudiera burlarme de Foo para simular lo que sucede si el servidor remoto está inactivo, o si hay algún otro problema que cause que Foo lance una IOException .

He echado un vistazo a la API de EasyMock y no puedo ver nada que se parezca a un método que le pide a un simulacro que lance una Excepción.

No es absolutamente esencial para mí realizar pruebas basadas en Exception , pero tengo curiosidad por saber si es posible con EasyMock, y creo que sería útil probar el contrato público de Foo de esta manera.

¿Alguien ha hecho algo así con EasyMock antes?

Referencias


De la documentation :

Para especificar las excepciones (más exactamente: Throwable s) que se expectLastCall() , el objeto devuelto por expectLastCall() y expect(T value) proporciona el método y andThrow(Throwable throwable) . El método se debe llamar en estado de registro después de la llamada al objeto simulado para el que especifica el Throwable que se debe lanzar.

Las excepciones no verificadas (es decir, RuntimeException , Error y todas sus subclases) se pueden lanzar desde todos los métodos. Las excepciones marcadas solo pueden ser lanzadas desde los métodos que realmente las lanzan.

Por ejemplo:

expectLastCall().andThrow(new HibernateException("Something terrible happened")); expect(query.list()).andThrow( new HibernateException("Something terrible happened"));


puede utilizar el método y el andThrow(Throwable throwable) en simulacro fácil. Verifique la documentation - encabezado Trabajar con excepciones .

Por ejemplo

expect(mock.voteForRemoval("Document")) .andThrow(new RuntimeException(), 4);