Mockito

Z bur.sk
Skočit na navigaci Skočit na vyhledávání


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