web-dev-qa-db-fra.com

Mockito tester une méthode vide lève une exception

J'ai une méthode avec un type de retour void. Il peut également générer un certain nombre d'exceptions, aussi j'aimerais tester ces exceptions. Toutes les tentatives ont échoué pour la même raison:

La méthode lorsque (T) dans le type Stubber n'est pas applicable pour les arguments (void)

Des idées comment je peux obtenir la méthode pour lancer une exception spécifiée?

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));
347
edwardmlyte

Les parenthèses sont mal placées. Tu dois utiliser

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);
                                          ^

et pas

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));
                                                                   ^

Ceci est expliqué dans la documentation

621
JB Nizet

Si vous vous êtes déjà demandé comment utiliser le nouveau style BDD de Mockito:

willThrow(new Exception()).given(mockedObject).methodReturningVoid(...));

Et pour référence future, il peut être nécessaire de lancer une exception puis de ne rien faire:

willThrow(new Exception()).willNothing().given(mockedObject).methodReturningVoid(...));
8
Ondrej Burkert