Heim >Java >javaLernprogramm >@Mock vs. @InjectMocks in Mockito: Wann welche verwenden?
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!