Mockito
Obsah
Príklady kódu
Nasledujúce príklady používajú knižnice "JUnit" a "Mockito". Do súboru "pom.xml" ich vložíme takto:
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.7.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>5.0.0</version> <scope>test</scope> </dependency>
Statické metódy importujeme takto:
import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*;
Vytvorenie testovacieho objektu
Predpokladajme, že máme rozhranie "MyInterface".
var obj = mock(MyInterface.class);
Môžeme použiť aj anotácie:
@Mock private MyInterface obj;
Aby anotácie fungovali, musíme ich nejako inicializovať. Jedna z možností je pred testom zavolať:
@BeforeEach void setUp() { MockitoAnnotations.openMocks(this); }
Nastavenie návratových hodnôt
Existujú dve syntaxe, každá má nejaké výhody a nevýhody:
when(obj.myfn()).thenReturn(42);
Do časti "when" napíšeme, ktorému objektu voláme ktorú metódu a s akými argumentami. Do časti "then..." napíšeme, čo sa má stať.
doReturn(42).when(obj).myfn();
Výhoda je, že syntax funguje aj na metódy s návratovou hodnotou "void", a že daná metóda sa počas vykonávania tohto kódu nezavolá. Nevýhoda je, že chýba kontrola typu počas komplikácie.
Kontrola volania
verify(obj).myfn();
Skontroluje, že daná metóda daného objektu sa volala práve raz.
verifyNoMoreInteractions(obj);
Skontroluje, že žiadne ďalšie metódy daného objektu sa už nevolali.
Odkazy
- Mockito (hlavná stránka projektu)
- Mockito (javadoc)