Yksikkötestaus JUnitilla ja Mockitolla
Testatkaa komponentteja erillään.
Yksikkötestaus JUnitilla ja Mockitolla on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 4 oppituntia.
Miksi yksikkötestejä tarvitaan
Yksikkötesti tarkistaa yhden luokan erillään siten, että sen riippuvuudet korvataan valetoteutuksilla.
- Nopea — Spring-kontekstia tai tietokantaa ei tarvita
- Kohdennettu — testaa yhden logiikan osan
- Luotettava — ei ulkoisia riippuvuuksia
JUnit 5:n perusteet
Spring Boot käyttää JUnit 5:tä (Jupiteria). Testi on @Test-annotaatiolla merkitty metodi.
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
@Test
void addsTwoNumbers() {
assertEquals(5, 2 + 3);
}
}Elinkaaren annotaatiot
Käytä @BeforeEach-annotaatiota tilan alustamiseen ennen jokaista testiä ja @AfterEach-annotaatiota siivoamiseen.
@BeforeEach
void setUp() {
calculator = new Calculator();
}
@Test
void addsCorrectly() {
assertEquals(7, calculator.add(3, 4));
}AssertJ:n sujuvat väitteet
Spring Boot sisältää AssertJ:n luettavia väitteitä varten assertThat-metodilla.
import static org.assertj.core.api.Assertions.assertThat;
assertThat(result).isEqualTo(42);
assertThat(list).hasSize(3).contains("a");Mikä on Mockito
Mockito luo mock-olioita eli riippuvuuksien valetoteutuksia, joiden toiminnan voitte määrittää.
Näin voitte testata luokkaa ilman sen todellisia riippuvuuksia, kuten tietokantaa tai HTTP-asiakkaita.
Mockien luominen
Merkitse testiluokka annotaatiolla @ExtendWith(MockitoExtension.class). Käytä riippuvuuksille @Mock-annotaatiota ja testattavalle luokalle @InjectMocks-annotaatiota.
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
@Mock
UserRepository repository;
@InjectMocks
UserService service;
}Toiminnan määrittäminen when/thenReturnilla
Määritä mockin toiminta käyttämällä rakennetta when(...).thenReturn(...).
@Test
void returnsUserById() {
User alice = new User("1", "Alice");
when(repository.findById("1"))
.thenReturn(Optional.of(alice));
User result = service.getById("1");
assertThat(result.getName()).isEqualTo("Alice");
}Poikkeuksen heittäminen mockista
Käytä thenThrow-metodia virhetilanteiden simulointiin.
when(repository.findById("99"))
.thenThrow(new RuntimeException("DB down"));
assertThrows(RuntimeException.class,
() -> service.getById("99"));Kutsujen tarkistaminen
verify tarkistaa, että mockin metodia kutsuttiin odotetuilla argumenteilla.
@Test
void savesUser() {
service.create(new User("2", "Bob"));
verify(repository).save(any(User.class));
verify(repository, times(1)).save(any());
}Argumenttien täsmäyttimet
any()-, eq()- ja anyString()-metodien kaltaiset täsmäyttimet tekevät stubauksista joustavia.
when(repository.findByName(anyString()))
.thenReturn(List.of(new User("1", "Alice")));
verify(repository).deleteById(eq("1"));Argumenttien kaappaaminen
ArgumentCaptor kaappaa mockille välitetyn arvon, jotta voitte tehdä siitä väitteitä.
ArgumentCaptor<User> captor =
ArgumentCaptor.forClass(User.class);
verify(repository).save(captor.capture());
assertThat(captor.getValue().getName())
.isEqualTo("Bob");Pikatarkistus
Testatkaa, miten hyvin ymmärrätte Mockiton.
Kertaus
Opitte kirjoittamaan nopeita yksikkötestejä:
- JUnit 5 sekä
@Test- ja@BeforeEach-annotaatiot - AssertJ:n
assertThatluettavia tarkistuksia varten - Mockiton
@Mockja@InjectMocks when/thenReturnstubaamiseen javerifykutsujen vahvistamiseen
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 24
- Oppitunnit
- 93
Usein kysytyt kysymykset
Onko oppitunti ”Yksikkötestaus JUnitilla ja Mockitolla” ilmainen?
Kyllä – oppitunnin ”Yksikkötestaus JUnitilla ja Mockitolla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssin, päivitä CoddyKit PROhon. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yksikkötestaus JUnitilla ja Mockitolla”?
Testatkaa komponentteja erillään. Harjoittelet Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Yksikkötestaus JUnitilla ja Mockitolla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunnilla?
Kyllä. Jokainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yksikkötestaus JUnitilla ja Mockitolla
- Web-kerroksen testaus MockMvc:llä
- Integraatiotestaus @SpringBootTest-annotaatiolla
- Oikeat riippuvuudet Testcontainersilla