J'écris le cas de test JUnit pour des méthodes similaires à l'exemple ci-dessous:
Class SampleA{
public static void methodA(){
boolean isSuccessful = methodB();
if(isSuccessful){
SampleB.methodC();
}
}
public static boolean methodB(){
//some logic
return true;
}
}
Class SampleB{
public static void methodC(){
return;
}
}
J'ai écrit le cas de test suivant dans ma classe de test:
@Test
public void testMethodA_1(){
PowerMockito.mockStatic(SampleA.class,SampleB.class);
PowerMockito.when(SampleA.methodB()).thenReturn(true);
PowerMockito.doNothing().when(SampleB.class,"methodC");
PowerMockito.doCallRealMethod().when(SampleA.class,"methodA");
SampleA.methodA();
}
Maintenant, je veux vérifier si la méthode statique C () de la classe Sample B est appelée ou non. Comment puis-je réaliser en utilisant PowerMockito 1.6? J'ai essayé beaucoup de choses mais ça ne semble pas marcher pour moi. Toute aide est appréciée.
Personnellement, je dois dire que PowerMock, etc. est la solution à un problème que vous ne devriez pas avoir si votre code n'est pas mauvais. Dans certains cas, cela est nécessaire car les frameworks, etc. utilisent des méthodes statiques qui conduisent à du code qui ne peut tout simplement pas être testé autrement, mais s'il s'agit de VOTRE code, vous devriez toujours préférer le refactoring au lieu de la simulation statique.
Quoi qu'il en soit, vérifier que dans PowerMockito ne devrait pas être si difficile ...
PowerMockito.verifyStatic( Mockito.times(1)); // Verify that the following mock method was called exactly 1 time
SampleB.methodC();
(Bien sûr, pour que cela fonctionne, vous devez ajouter SampleB au @PrepareForTest
annotation et appelez mockStatic
pour cela.)