web-dev-qa-db-fra.com

Obtenir des objets simulacres EasyMock pour lancer des exceptions

Je suis en train d'utiliser EasyMock pour écrire des tests d'unité pour un certain nombre de classes de collaboration. Une de ces classes (permet de l'appeler Foo) ouvre une connexion réseau à un serveur distant et analyse la réponse XML des serveurs dans quelque chose que le reste des classes peut utiliser.

Actuellement, mes tests ne comprennent que des scénarios dans lesquels tout est Hunky-Dory et que le serveur distant est opérationnel et retourne XML comme prévu. Cependant, je le ferait Soyez plus heureux si je pouvais se moquer de Foo afin que je simule ce qui se passe si le serveur distant est en panne, ou il y a un autre problème qui provoque un autre problème qui cause un IOException doit être jeté par Foo.

J'ai regardé l'API EasyMock, et je ne vois rien qui ressemble à une méthode demandant à une simule de jeter une exception.

Ce n'est pas absolument essentiel pour moi d'avoir Exception tests basés, mais je suis curieux si c'est possible avec EasyMock, et je pense qu'il serait utile de tester le contrat public Foo de cette manière.

Quelqu'un a fait quelque chose comme ça avec EasyMock avant?

Références

21
Jon

Du Documentation :

Pour spécifier des exceptions (plus précisément: Throwables) à lancer, l'objet renvoyé par expectLastCall() et expect(T value) fournit la méthode andThrow(Throwable throwable). La méthode doit être appelée dans l'état d'enregistrement après l'appel à l'objet simulé pour lequel elle spécifie le Throwable doit être lancé.

Des exceptions non cochées (c'est-à-dire RuntimeException, Error et toutes leurs sous-classes) peuvent être jetées à partir de chaque méthode. Les exceptions vérifiées ne peuvent être projetées que des méthodes qui les jettent réellement.

Par exemple:

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

expect(query.list()).andThrow(
        new HibernateException("Something terrible happened"));
28
Péter Török

vous pouvez utiliser la méthode andThrow(Throwable throwable) dans Easy Mock. Cochez la page Documentation - Rubrique Utilisation avec des exceptions .

Par exemple

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