Les objets Mock sont-ils réinitialisés pour chaque test?
Je suis en utilisant le Mockito cadre pour créer des objets Fantaisie dans mes tests JUnit. Chaque maquette sait quelles méthodes ont été appelés sur elle, de sorte que lors de mes tests, je peux écrire
verify(myMock, atLeastOnce()).myMethod();
Je me demande si cette maquette connaissance de ce qu'il a appelé à persiste à travers mes tests? Si elle ne persistent, alors je pourrais être en train de faux positifs lors de l'utilisation de la même verify
méthode dans les deux tests.
Un exemple de code
@RunWith(MockitoJUnitRunner.class)
public class EmrActivitiesImplTest {
@Mock private MyClass myMock;
@Before
public void setup() {
when(myMock.myMethod()).thenReturn("hello");
}
@Test
public void test1() {
//..some logic
verify(myMock, atLeastOnce()).myMethod();
}
@Test
public void test2() {
//..some other logic
verify(myMock, atLeastOnce()).myMethod();
}
}
Simulacre d'état est persistant - test2 va passer, peu importe, puisque test1 de vérifier la méthode adoptée
Se moquer de l'état est réinitialisé - test2 échouera si myMock.myMethod() n'est pas appelé
source d'informationauteur Shane
Vous devez vous connecter pour publier un commentaire.
JUnit crée une nouvelle instance de la classe de test chaque fois qu'il exécute une nouvelle méthode d'analyse et des pistes de méthode @before chaque fois qu'il crée une nouvelle classe de test. Vous pouvez facilement tester
Et MockitoJUnitRunner va créer un nouveau MyMock maquette instance pour chaque méthode de test
Ce passe. Si l'état a persisté, puis le deuxième, le test échoue. Si vous déboguez il vous se que vous obtenez une nouvelle instance de la moqué d'objet pour chaque test.
Si vous venez d'initialiser les objets Fantaisie dans votre
setup
puis à l'intérieur de chaque test, vous pouvez fournir des fonctionnalités différentes. Vous pouvez initialiser une fois et changer la façon dont ils agissent/attendre d'essai par la suite.