Sulautetut tietokannat testeissä
Määrittäkää ja hyödyntäkää muistinvaraisia tai sulautettuja tietokantoja nopeaan ja eristettyyn integraatiotestaukseen.
Sulautetut tietokannat testeissä on ilmainen Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Testauksen hallinta: JUnit, Mockito ja integraatiotestit-kurssilla on yhteensä 4 oppituntia.
Upotetut tietokannat testeissä
Kun kirjoitat integraatiotestejä Spring Boot -sovelluksille, erityisesti tietokannan kanssa toimiville sovelluksille, testejä varten tarvitaan tietokanta, jota vasten ne suoritetaan.
Upotetut tietokannat tarjoavat tähän tilanteeseen sopivan kevyen muistinsisäisen ratkaisun.
Miksi käyttää upotettuja tietokantoja?
Upotetut tietokannat tarjoavat testaukselle useita keskeisiä etuja:
- Eristys: Jokainen testiajo saa puhtaan ja uuden tietokannan, mikä estää sivuvaikutuksia.
- Nopeus: Koska tietokanta sijaitsee muistissa, se on erittäin nopea ja lyhentää testien suoritusaikaa.
- Yksinkertaisuus: Ulkoisia tietokantapalvelimia tai monimutkaisia valmisteluja ei tarvita.
- Toistettavuus: Testit ovat yhdenmukaisia, koska ne alkavat aina samasta tietotilasta.
H2- ja HSQLDB-vaihtoehdot
Java-sovellusten suosittuja upotettujen tietokantojen vaihtoehtoja ovat H2 Database ja HSQLDB.
- H2: Nopea, avoimen lähdekoodin ja JDBC-yhteensopiva muistinsisäinen tietokanta. Sitä käytetään laajasti Spring Bootin kanssa.
- HSQLDB: Toinen kevyt, Javalla kirjoitettu relaatiotietokanta.
Keskitymme H2:een, koska se on Spring Bootissa yleinen oletus.
H2-riippuvuuden lisääminen
Jotta voit käyttää H2:ta Spring Boot -projektissasi, lisäät sen yleensä test-laajuuden riippuvuudeksi tiedostoon pom.xml (Maven) tai tiedostoon build.gradle (Gradle).
Näin se on käytettävissä vain testauksen aikana.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>Spring Bootin automaattinen konfigurointi
Yksi Spring Bootin taikatempuista on automaattinen konfigurointi. Kun se havaitsee H2:n luokkapolulla testien aikana, se määrittää automaattisesti muistinsisäisen H2-tietokannan puolestasi.
Testeissä tietokannan URL-osoitetta ei usein tarvitse määrittää application.properties-tiedostossa, joten valmistelu on erittäin helppoa!
User-entiteetti ja repository
Tarkastellaan yksinkertaista User-entiteettiä ja UserRepository-repositorya. Haluamme testata, tallentaako repository käyttäjiä oikein ja hakeeko se ne oikein.
Nämä ovat tavallisia JPA-komponentteja.
// User.java
package com.coddykit.demo;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
public User() {}
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Getters and Setters
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}
// UserRepository.java
package com.coddykit.demo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
}@DataJpaTest ja H2
Spring Boot tarjoaa @DataJpaTest-annotaation erityisesti JPA-komponenttien testaamiseen. Se määrittää automaattisesti muistinsisäisen tietokannan, kuten H2:n, jos se on käytettävissä, sekä EntityManager-olion.
Lisäksi se peruuttaa tapahtumat jokaisen testin jälkeen, mikä varmistaa puhtaan tilan.
UserRepository-testin esimerkki
Näin voisit kirjoittaa UserRepository-repositorylle integraatiotestin H2:n ja @DataJpaTest-annotaation avulla:
package com.coddykit.demo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
class UserRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private UserRepository userRepository;
@Test
void whenFindByName_thenReturnUser() {
// given
User alice = new User("Alice", "alice@example.com");
entityManager.persist(alice);
entityManager.flush();
// when
User found = userRepository.findByName(alice.getName());
// then
assertThat(found.getName()).isEqualTo(alice.getName());
assertThat(found.getEmail()).isEqualTo(alice.getEmail());
}
@Test
void whenInvalidName_thenReturnNull() {
// when
User found = userRepository.findByName("InvalidName");
// then
assertThat(found).isNull();
}
}Skeeman ja tietojen alustaminen
Monimutkaisemmissa tilanteissa muistinsisäiseen tietokantaan voi olla tarpeen esiladata skeema tai alustavat tiedot.
- Sijoita
schema.sqlhakemistoonsrc/test/resourcesDDL:ää (Data Definition Language) varten. - Sijoita
data.sqlhakemistoonsrc/test/resourcesDML:ää (Data Manipulation Language) varten.
Spring Boot ottaa nämä automaattisesti käyttöön testeissäsi.
Pikakysymys
Mikä seuraavista EI ole H2:n kaltaisen upotetun tietokannan ensisijainen hyöty Spring Boot -integraatiotesteissä?
Kertaus ja seuraavat vaiheet
Olemme tarkastelleet, kuinka korvaamattomia H2:n kaltaiset upotetut tietokannat ovat nopeissa ja eristetyissä Spring Boot -integraatiotesteissä.
- Ne tarjoavat nopeutta, eristystä ja yksinkertaisuutta.
- Spring Boot määrittää ne automaattisesti vähäisellä vaivalla.
@DataJpaTesthelpottaa JPA-repositoryjen testaamista näiden tietokantojen avulla.- Skeemat ja tiedot voidaan alustaa tiedostojen
schema.sqljadata.sqlavulla.
Seuraavaksi voit tutustua RESTful-rajapintojen testaamiseen MockMvc-olion avulla!
Opi Testauksen hallinta: JUnit, Mockito ja integraatiotestit 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
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Sulautetut tietokannat testeissä” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppimispolun 3 oppituntia, myös oppitunnin “Sulautetut tietokannat testeissä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Testauksen hallinta: JUnit, Mockito ja integraatiotestit-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Sulautetut tietokannat testeissä”?
Määrittäkää ja hyödyntäkää muistinvaraisia tai sulautettuja tietokantoja nopeaan ja eristettyyn integraatiotestaukseen. Harjoittelet Testauksen hallinta: JUnit, Mockito ja integraatiotestit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Testauksen hallinta: JUnit, Mockito ja integraatiotestit-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Sulautetut tietokannat testeissä”-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ä Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppitunnilla?
Kyllä. Jokainen Testauksen hallinta: JUnit, Mockito ja integraatiotestit-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
- Spring Test Context Framework
- RESTful-APIen testaaminen
- Sulautetut tietokannat testeissä
- Web-kerrosten testaaminen @WebMvcTestillä ja MockMvc:llä