Heim >Java >javaLernprogramm >@Mock vs. @InjectMocks in Mockito: Wann welche verwenden?

@Mock vs. @InjectMocks in Mockito: Wann welche verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-24 06:49:16490Durchsuche

@Mock vs. @InjectMocks in Mockito: When to Use Which?

Wann sollte man @Mock vs. @InjectMocks in Mockito verwenden?

Mockito ist ein beliebtes Framework für Mocking und Unit-Tests in Java. Es bietet zwei Anmerkungen zum Verspotten: @Mock und @InjectMocks. Es ist wichtig, ihre Unterschiede zu verstehen, um Mocks effektiv in Ihren Tests nutzen zu können.

@Mock

@Mock wird verwendet, um ein Mock-Objekt zu generieren. Wenn Sie ein Feld mit @Mock annotieren, erstellt Mockito ein Objekt der angegebenen Klasse und registriert es als Mock. Dieser Mock hält sich an das Verhalten der Mock-Schnittstelle und stellt einen Ersatz für reale Objekte in Ihren Tests dar.

@InjectMocks

Im Gegensatz dazu kommentiert @InjectMocks eine Instanz von a Klasse im Test. Mockito fügt Scheinobjekte, die mit @Mock-Annotationen erstellt wurden, in diese Instanz ein. Mit dieser Technik können Sie das Verhalten der zu testenden Klasse testen, während Sie mit bestimmten Mock-Abhängigkeiten interagieren.

Überlegungen zur Verwendung

Um @Mock und @InjectMocks zu verwenden, müssen Sie Ich muss die Mocks initialisieren und injizieren. Verwenden Sie in JUnit 4 @RunWith(MockitoJUnitRunner.class) oder Mockito.initMocks(this). Verwenden Sie für JUnit 5 @ExtendWith(MockitoExtension.class).

Beispiel

Betrachten Sie das folgende Beispiel, das die Verwendung von @Mock und @InjectMocks veranschaulicht:

// JUnit 4
@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // injected into someManager
    
    // tests...
}

In diesem Beispiel wird someManager mit der Scheininstanz someDependency injiziert. Tests können jetzt bestätigen, wie someManager mit diesem Mock interagiert.

Fazit

Die ordnungsgemäße Verwendung von @Mock und @InjectMocks ist für effektive Mockito-basierte Unit-Tests unerlässlich. Indem Sie ihre Rollen klar verstehen, können Sie die Genauigkeit und Zuverlässigkeit Ihrer Tests sicherstellen.

Das obige ist der detaillierte Inhalt von@Mock vs. @InjectMocks in Mockito: Wann welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn