783 Stimmen

Unterschied zwischen @Mock und @InjectMocks

Was ist der Unterschied zwischen @Mock und @InjectMocks im Mockito-Framework?

11voto

Lahiru Wijesekara Punkte 603

Die @InjectMocks-Annotation kann verwendet werden, um Mock-Felder automatisch in ein Testobjekt einzufügen.

In folgendem Beispiel wurde @InjectMocks verwendet, um die Mock-DatenMap in die dataLibrary einzufügen.

@Mock
Map dataMap;

@InjectMocks
DataLibrary dataLibrary = new DataLibrary();

    @Test
    public void whenUseInjectMocksAnnotation_() {
        Mockito.when(dataMap.get("aData")).thenReturn("aMeaning");

        assertEquals("aMeaning", dataLibrary.getMeaning("aData"));
    }

9voto

avp Punkte 2312

Viele Leute haben hier eine großartige Erklärung über @Mock vs @InjectMocks gegeben. Ich mag es, aber ich denke, unsere Tests und Anwendung sollten so geschrieben werden, dass wir @InjectMocks nicht verwenden müssen.

Referenz für weitere Lektüre mit Beispielen: https://tedvinke.wordpress.com/2014/02/13/mockito-why-you-should-not-use-injectmocks-annotation-to-autowire-fields/

4voto

user7294900 Punkte 52028

Beachten Sie, dass @InjectMocks bald veraltet sein werden

Veraltet @InjectMocks und planen die Entfernung in Mockito 3/4

und Sie können die Antwort und den Link von @avp hier folgen:

Warum Sie die InjectMocks Annotation nicht verwenden sollten, um Felder zu verdrahten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X