web-dev-qa-db-fra.com

MockitoJUnitRunner est obsolète

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?

56
Albert Hendriks

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

116
Nicolas Filotto

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

7
MateuszW90

Il existe également une option @Rule:

@Rule 
public MockitoRule rule = MockitoJUnit.rule();

Ou à Kotlin:

@get:Rule
var rule = MockitoJUnit.rule()
4
git pull origin