Se moquant de comportement réinitialise après chaque essai avec PowerMock
Je suis en train d'écrire des tests unitaires à l'aide de PowerMock, se moquant de comportement de certains util classes. De définir le comportement une fois pour la classe de test (par @BeforeClass annotation) causes:
- premier test invocation de retour moqué de valeur
- deuxième test invocation à rendement réel valeur de retour de méthode
Exemple de code:
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest( {A.class, B.class})
public class TestMockedMethods {
private static B b;
@BeforeClass
public static void setUp() {
PowerMockito.mockStatic(A.class);
PowerMockito.when(A.getVal()).thenReturn("X");
b = PowerMockito.mock(B.class);
PowerMockito.when(b.getVal()).thenReturn("Y");
}
@Test
public void test1() { //PASS
Assert.assertEquals("X", A.getVal());
Assert.assertEquals("Y", b.getVal());
}
@Test
public void test2() { //FAIL
Assert.assertEquals("X", A.getVal()); //actual="A"
Assert.assertEquals("Y", b.getVal()); //actual="B"
}
}
class A {
static String getVal() {
return "A";
}
}
class B {
String getVal() {
return "B";
}
}
Des idées pourquoi le deuxième test est un échec?
Vous devez vous connecter pour publier un commentaire.
La méthode
PowerMockito.mockStatic(...)
appelleMockCreator.mock(...)
. Cette méthode regsiters un Exécutable qui sera exécuté après chaque test :Ce praticable nettoie la état interne de Mockito :
De sorte que vous devez exécuter votre programme d'installation avant chaque test.