J'essaie d'utiliser Powermock et Mockito pour se moquer d'une méthode statique vide pour lever l'exception comme ci-dessous. Mais j'ai rencontré un problème. À moins que je fasse les deux invocations d'Adder.add () avec le même argument, le IOException
moqué ne sera pas jeté.
BTW, j'ai ajouté @RunWith(PowerMockRunner.class)
et @PrepareForTest(Adder.class)
à la classe de test unitaire.
class Adder{
public static void add(int i) throws IOException{
return;
}
}
@Test
public void testAdder() throws IOException{
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(12);
try {
Adder.add(11);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// assert things
}
Merci d'avance. :)
La réponse est comme ci-dessous.
Après avoir consulté ici http://code.google.com/p/powermock/issues/detail?id=278 , en fait Adder.add (12) ci-dessus fait partie de la configuration de la méthode statique factice. Cela signifie qu'en invoquant Adder.add () avec l'argument 12, IOException sera levée. C'est difficile à comprendre, non? :) Il doit donc être écrit comme ci-dessous.
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
La réponse est comme ci-dessous.
Après avoir consulté ici http://code.google.com/p/powermock/issues/detail?id=278 , en fait Adder.add (12) ci-dessus fait partie de la configuration de la méthode statique factice. Cela signifie qu'en invoquant Adder.add () avec l'argument 12, IOException sera levée. C'est difficile à comprendre, non? :) Il doit donc être écrit comme ci-dessous.
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
ÉDITER:
Le lien est mort, essayez Internet Archive un à la place.
Ou
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class, "add", Mathers.eq(12));
Avez-vous oublié de mettre PowerMock en mode relecture?
Comment se moquer des méthodes statiques.
Par votre lien ...
Comment vérifier le comportement La vérification d'une méthode statique se fait en deux étapes. Appelez d'abord PowerMockito.verifyStatic()
pour commencer à vérifier le comportement et appelez la méthode statique que vous souhaitez vérifier. Par exemple.
PowerMockito.verifyStatic();
Static.firstStaticMethod(param);
Important: Vous devez appeler verifyStatic()
par vérification de méthode.