Rangka Kerja Konteks Ujian Spring
Fahami cara rangka kerja konteks ujian Spring memulakan dan mengurus konteks aplikasi untuk ujian penyepaduan.
Rangka Kerja Konteks Ujian Spring ialah pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi percuma di CoddyKit. Ini ialah pelajaran 1 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.
Pengenalan Konteks Ujian Spring
Selamat datang ke ujian integrasi Spring Boot! Apabila anda menulis ujian untuk aplikasi Spring, anda memerlukan cara untuk memulakan sebahagian daripada aplikasi anda. Di sinilah Rangka Kerja Konteks Ujian Spring berperanan.
Rangka kerja ini menyediakan infrastruktur untuk memuatkan dan mengurus ApplicationContext bagi ujian anda, serta memastikan ujian tersebut berjalan dalam persekitaran yang memahami Spring. Hal ini penting untuk ujian yang berinteraksi dengan bean, perkhidmatan atau lapisan data.
Anotasi @SpringBootTest
Teras ujian integrasi Spring Boot ialah anotasi @SpringBootTest. Anotasi ini memberitahu JUnit supaya memulakan konteks aplikasi Spring Boot untuk ujian anda.
- Anotasi ini memulakan
ApplicationContextyang lengkap. - Anotasi ini mencari kelas konfigurasi utama, yang selalunya ialah kelas
@SpringBootApplicationanda. - Anotasi ini menyediakan akses kepada semua bean Spring anda dalam ujian.
Anggaplah ia seperti menjalankan keseluruhan aplikasi anda, tetapi khusus untuk keperluan ujian anda.
Cara Konteks Dimuatkan
Apabila @SpringBootTest digunakan, rangka kerja ujian Spring mencari kelas aplikasi utama anda, iaitu kelas yang dianotasi dengan @SpringBootApplication, kemudian menggunakannya untuk mencipta ApplicationContext.
Konteks ini pada asasnya ialah bekas untuk semua komponen (bean) aplikasi anda. Ujian anda kemudiannya dijalankan terhadap konteks aplikasi yang aktif ini, membolehkannya berinteraksi dengan perkhidmatan, repositori dan komponen lain yang diurus oleh Spring.
Penyinggahan Konteks untuk Kelajuan
Memuatkan ApplicationContext Spring yang lengkap boleh mengambil masa. Untuk mempercepatkan himpunan ujian anda, Rangka Kerja Konteks Ujian Spring menyimpan konteks dalam cache secara bijak.
- Jika beberapa ujian memerlukan konfigurasi konteks yang sama sepenuhnya, Spring akan menggunakan semula konteks yang telah dimuatkan sebelum ini.
- Hal ini mengurangkan masa pelaksanaan ujian dengan ketara, khususnya dalam projek besar.
- Konteks hanya dimuatkan semula jika konfigurasi, contohnya sifat atau profil aktif, berubah.
Contoh Asas Aplikasi Spring
Berikut ialah aplikasi Spring Boot yang minimum. Apabila anda menggunakan @SpringBootTest, rangka kerja ini akan memuatkan konteks berdasarkan kelas ini, lalu menjadikan bean-nya tersedia untuk ujian anda.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(MyApp.class, args);
System.out.println("App context loaded: " + (context != null));
}
}Menggunakan @SpringBootTest (Ujian)
Sekarang, mari lihat cara ujian menggunakan @SpringBootTest untuk memuatkan konteks bagi MyApp daripada babak sebelumnya. Kami menyuntik ApplicationContext untuk mengesahkan bahawa konteks tersebut telah dimuatkan.
Perhatikan bahawa kelas ujian ini sendiri tidak mempunyai kaedah main, kerana pelaksana JUnit mengendalikan pelaksanaannya.
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest
class MyApplicationTests {
@Test
void contextLoads(ApplicationContext context) {
assertThat(context).isNotNull();
System.out.println("ApplicationContext loaded for test!");
}
}Menyesuaikan Persekitaran Web
Bagi aplikasi web, @SpringBootTest boleh memulakan pelayan web untuk ujian anda. Anda mengawal tingkah laku ini menggunakan atribut webEnvironment:
MOCK(lalai): Menyediakan persekitaran servlet olokan.RANDOM_PORT: Memulakan pelayan terbenam pada port rawak.DEFINED_PORT: Memulakan pelayan terbenam pada port lalai atau port yang dikonfigurasikan.NONE: Tidak memulakan pelayan terbenam.
RANDOM_PORT sering menjadi pilihan untuk mengelakkan konflik port.
Contoh Persekitaran Web
Berikut ialah cara mengkonfigurasi @SpringBootTest untuk memulakan pelayan web pada port rawak. Hal ini membolehkan anda melaksanakan permintaan HTTP sebenar terhadap aplikasi anda dalam ujian.
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.beans.factory.annotation.Value;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class WebAppTests {
@Value(value="${local.server.port}")
private int port;
@Test
void serverStarts() {
assertThat(port).isNotZero();
System.out.println("Web server started on port: " + port);
}
}Mengatasi Sifat Ujian
Kadangkala, anda memerlukan sifat konfigurasi khusus untuk ujian yang berbeza daripada aplikasi utama anda, contohnya URL pangkalan data ujian. Anda boleh mengatasi sifat ini menggunakan atribut properties dalam @SpringBootTest.
Hal ini membolehkan anda mengasingkan persekitaran ujian tanpa mengubah kod pengeluaran.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
@SpringBootApplication
public class PropApp implements CommandLineRunner {
@Value("${app.message:Default Message}")
private String message;
public static void main(String[] args) {
SpringApplication.run(PropApp.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("App Message: " + message);
}
}Semakan Pantas
Apakah pilihan @SpringBootTest.WebEnvironment yang akan anda gunakan untuk memulakan pelayan web terbenam pada port rawak yang tersedia?
Imbas Kembali: Konteks Ujian Spring
Anda telah mempelajari Rangka Kerja Konteks Ujian Spring, iaitu alat yang berkuasa untuk ujian integrasi. Kita telah membincangkan:
- Tujuan rangka kerja dan
@SpringBootTest. - Cara konteks aplikasi dimuatkan dan disimpan dalam cache.
- Cara menyesuaikan persekitaran ujian dengan
webEnvironment. - Cara mengatasi sifat untuk konfigurasi khusus ujian.
Asas ini penting untuk menulis ujian integrasi Spring Boot yang kukuh dan cekap!
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 “Rangka Kerja Konteks Ujian Spring” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi, termasuk “Rangka Kerja Konteks Ujian Spring”, 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 “Rangka Kerja Konteks Ujian Spring”?
Fahami cara rangka kerja konteks ujian Spring memulakan dan mengurus konteks aplikasi untuk ujian penyepaduan. 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 1 daripada 4.
Berapa lamakah pelajaran “Rangka Kerja Konteks Ujian Spring” 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