J'essaie de faire un test unitaire avec @InjectMocks
et @Mock
.
@RunWith(MockitoJUnitRunner.class)
public class ProblemDefinitionTest {
@InjectMocks
ProblemDefinition problemDefinition;
@Mock
Matrix matrixMock;
@Test
public void sanityCheck() {
Assert.assertNotNull(problemDefinition);
Assert.assertNotNull(matrixMock);
}
}
Lorsque je n'inclue pas l'annotation @RunWith
, le test échoue. Mais
Le type MockitoJUnitRunner est obsolète
J'utilise Mockito 2.6.9. Comment dois-je m'y prendre?
org.mockito.runners.MockitoJUnitRunner
est maintenant vraiment obsolète, vous êtes supposé utiliser org.mockito.junit.MockitoJUnitRunner
à la place. Comme vous pouvez voir que seul le nom du paquet a changé, le nom simple de la classe est toujours MockitoJUnitRunner
.
Extrait du javadoc de _org.mockito.runners.MockitoJUnitRunner
_:
Déplacé à
MockitoJUnitRunner
, cette classe sera supprimée avec Mockito 3
Vous pouvez essayer ceci:
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
Comme vous ajoutez l'annotation @Before
, vos objets fictifs peuvent être nouveaux et enregistrés plusieurs fois, et vous pouvez attribuer de nouvelles propriétés aux objets dans tous les tests. Mais si vous voulez un comportement d’enregistrement ponctuel pour un objet fantaisie, veuillez ajouter @BeforeCLass
Il existe également une option @Rule
:
@Rule
public MockitoRule rule = MockitoJUnit.rule();
Ou à Kotlin:
@get:Rule
var rule = MockitoJUnit.rule()