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
Du Documentation :
Pour spécifier des exceptions (plus précisément:
Throwable
s) à lancer, l'objet renvoyé parexpectLastCall()
etexpect(T value)
fournit la méthodeandThrow(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 leThrowable
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"));
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);