Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät · Oppitunti

Yksikkötestaus JUnitilla ja Mockitolla

Testatkaa komponentteja erillään.

Oppitunti 1/413 vaihetta

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 assertThat luettavia tarkistuksia varten
  • Mockiton @Mock ja @InjectMocks
  • when/thenReturn stubaamiseen ja verify kutsujen vahvistamiseen
Aloita maksutta

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

  1. Yksikkötestaus JUnitilla ja Mockitolla
  2. Web-kerroksen testaus MockMvc:llä
  3. Integraatiotestaus @SpringBootTest-annotaatiolla
  4. Oikeat riippuvuudet Testcontainersilla
← Takaisin: Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät