Hintergrund
Beim Softwaretesten , Mocking ist eine Technik, mit der gefälschte Objekte erstellt werden, die das Verhalten tatsächlicher Abhängigkeiten simulieren. Mockito ist ein beliebtes Mock-Framework in Java, das mehrere Möglichkeiten zum Mock-Objekte bietet. Dieser Leitfaden vergleicht die verschiedenen Ansätze und ihre entsprechende Verwendung.
Mockito.mock() vs. @Mock (Mockito Annotations)
Mockito.mock() und @Mock sind aus der Standard-Mockito-Bibliothek. Beide erstellen Scheinobjekte für Klassen oder Schnittstellen. @Mock bietet eine praktische annotationsbasierte Lösung, während Mockito.mock() expliziter ist. Von der Funktionalität her sind sie gleichwertig. Allerdings wird die Verwendung von @Mock bevorzugt, da es den Code vereinfacht.
@MockBean (Spring Boot)
@MockBean ist ein Wrapper, der von der Spring Boot-Testbibliothek bereitgestellt wird. Es kombiniert Mockito-Mocking-Funktionen mit der Bean-Verwaltung von Spring. Im Gegensatz zu Mockito.mock() und @Mock erstellt @MockBean Mock-Beans, die in den Spring ApplicationContext eingefügt werden. Es hat zwei Hauptmerkmale:
Nutzungsrichtlinien
Wann man einfaches Mockito verwendet: Verwenden Sie Mockito.mock() oder @Mock, wenn Sie Komponenten ohne testen wenn Sie sich auf Spring Boot-Abhängigkeiten verlassen oder wenn die Isolierung der getesteten Komponente von entscheidender Bedeutung ist.
Wann @MockBean verwendet werden sollte: Verwenden Sie @MockBean in Webtest-Slices (z. B. @WebMvcTest) oder anderen Testszenarien, die eine Änderung der Spring Boot-Bean erfordern Definitionen oder Interaktion mit Beans, die vom Container verwaltet werden.
Beispiel mit @MockBean
Stellen Sie sich einen Spring Boot-Webtest vor, bei dem der FooController auf den FooService angewiesen ist. Mit @MockBean können wir die echte FooService-Bean im Testkontext durch eine Mock-Bean ersetzen:
<code class="java">@WebMvcTest(FooController.class) public class FooControllerTest { @MockBean private FooService fooServiceMock; // ... // }</code>
In diesem Beispiel wird die fooServiceMock-Instanz in den FooController eingefügt, sodass wir dessen Verhalten und Steuerung nachahmen können wie es mit dem Controller interagiert.
Das obige ist der detaillierte Inhalt vonWann sollte ich @Mock, @MockBean oder Mockito.mock() für Mocking in Java verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!