Pangkalan Data Terbenam untuk Ujian
Konfigurasikan dan gunakan pangkalan data dalam memori atau terbenam untuk pengujian penyepaduan yang pantas dan terasing.
Pangkalan Data Terbenam untuk Ujian ialah pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi merangkumi sejumlah 4 pelajaran.
Pangkalan Data Terbenam untuk Ujian
Apabila menulis ujian integrasi untuk aplikasi Spring Boot, khususnya aplikasi yang berinteraksi dengan pangkalan data, anda memerlukan tika pangkalan data untuk dijadikan sasaran pelaksanaan ujian.
Pangkalan data terbenam menyediakan penyelesaian ringan dalam memori yang amat sesuai untuk senario ini.
Mengapa Menggunakan Pangkalan Data Terbenam?
Pangkalan data terbenam menawarkan beberapa manfaat utama untuk pengujian:
- Pengasingan: Setiap pelaksanaan ujian mendapat pangkalan data yang bersih dan baharu, lalu mengelakkan kesan sampingan.
- Kelajuan: Oleh sebab berada dalam memori, pangkalan data ini sangat pantas dan mengurangkan masa pelaksanaan ujian.
- Kesederhanaan: Anda tidak memerlukan pelayan pangkalan data luaran atau persediaan yang rumit.
- Kebolehulangan: Ujian adalah konsisten kerana sentiasa bermula dengan keadaan data yang sama.
Pilihan H2 dan HSQLDB
Dua pilihan popular untuk pangkalan data terbenam dalam aplikasi Java ialah Pangkalan Data H2 dan HSQLDB.
- H2: Pangkalan data dalam memori yang pantas, sumber terbuka dan mematuhi JDBC. Ia digunakan secara meluas dengan Spring Boot.
- HSQLDB: Satu lagi pangkalan data hubungan ringan yang ditulis dalam Java.
Kita akan memfokuskan H2 kerana ia merupakan lalai yang biasa digunakan dalam Spring Boot.
Menambah Kebergantungan H2
Untuk menggunakan H2 dalam projek Spring Boot anda, biasanya anda menambahkannya sebagai kebergantungan skop test dalam pom.xml (untuk Maven) atau build.gradle (untuk Gradle).
Hal ini memastikan ia hanya tersedia semasa pengujian.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>Konfigurasi Automatik Spring Boot
Salah satu helah ajaib Spring Boot ialah konfigurasi automatik. Apabila Spring Boot mengesan H2 pada laluan kelas semasa pengujian, ia mengkonfigurasi pangkalan data H2 dalam memori secara automatik untuk anda.
Anda biasanya tidak perlu menentukan URL pangkalan data dalam application.properties untuk ujian, menjadikan persediaan amat mudah!
Entiti dan Repositori User
Mari pertimbangkan entiti User dan UserRepository yang mudah. Kita mahu menguji sama ada repositori kita menyimpan dan mendapatkan semula pengguna dengan betul.
Ini ialah komponen JPA standard.
// 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 dengan H2
Spring Boot menyediakan @DataJpaTest khusus untuk menguji komponen JPA. Anotasi ini mengkonfigurasi secara automatik pangkalan data dalam memori, seperti H2 jika tersedia, serta EntityManager.
Anotasi ini juga melancarkan semula transaksi selepas setiap ujian, bagi memastikan keadaan yang bersih.
Contoh Ujian UserRepository
Berikut ialah cara anda boleh menulis ujian integrasi untuk UserRepository kita menggunakan H2 dan @DataJpaTest:
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();
}
}Pemulaan Skema dan Data
Bagi senario yang lebih kompleks, anda mungkin perlu mengisi pangkalan data dalam memori terlebih dahulu dengan skema atau data awal.
- Letakkan
schema.sqldalamsrc/test/resourcesuntuk DDL (Bahasa Definisi Data). - Letakkan
data.sqldalamsrc/test/resourcesuntuk DML (Bahasa Manipulasi Data).
Spring Boot akan mengambil fail ini secara automatik untuk ujian anda.
Semakan Pantas
Antara berikut, yang manakah BUKAN manfaat utama menggunakan pangkalan data terbenam seperti H2 untuk ujian integrasi Spring Boot?
Imbas Kembali dan Langkah Seterusnya
Kita telah meneroka cara pangkalan data terbenam seperti H2 amat berguna untuk ujian integrasi Spring Boot yang pantas dan terasing.
- Pangkalan data ini menawarkan kelajuan, pengasingan dan kesederhanaan.
- Spring Boot mengkonfigurasikannya secara automatik dengan usaha yang minimum.
@DataJpaTestmemudahkan pengujian repositori JPA dengan pangkalan data ini.- Anda boleh memulakan skema dan data menggunakan
schema.sqldandata.sql.
Seterusnya, anda boleh meneroka pengujian API RESTful dengan MockMvc!
Pelajari Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Pangkalan Data Terbenam untuk Ujian” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi, termasuk “Pangkalan Data Terbenam untuk Ujian”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pangkalan Data Terbenam untuk Ujian”?
Konfigurasikan dan gunakan pangkalan data dalam memori atau terbenam untuk pengujian penyepaduan yang pantas dan terasing. Anda berlatih Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Pangkalan Data Terbenam untuk Ujian” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi ini?
Ya. Setiap pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Rangka Kerja Konteks Ujian Spring
- Menguji API RESTful
- Pangkalan Data Terbenam untuk Ujian
- Menguji Lapisan Web dengan @WebMvcTest dan MockMvc