Menulis kod Java yang boleh diuji dengan Junit 5 dan Mockito
Jul 28, 2025 am 03:24 AMTulis kod yang boleh diuji menggunakan suntikan ketergantungan untuk membolehkan gandingan longgar, seperti yang dilihat dengan menggantikan kebergantungan keras dengan yang disuntik; 2. Gunakan Junit 5 untuk ujian berstruktur dengan ciri -ciri seperti @Beforeeach, @test, dan menegaskan untuk memastikan ujian yang bersih, boleh dibaca, dan boleh dipercayai; 3. Mengejutkan kebergantungan luaran dengan mockito menggunakan mock (), ketika (). Thenreturn (), dan sahkan () untuk mengasingkan tingkah laku dan mengelakkan pergantungan pada sistem sebenar; 4. Ikuti amalan terbaik seperti nama ujian deskriptif, corak AAA, mengelakkan ujian terperinci pelaksanaan, menjaga ujian bebas, tidak terlalu mengejek, dan meliputi kes kelebihan untuk memastikan ujian yang boleh dipelihara dan berkesan; Akhirnya, mereka bentuk untuk kesesuaian meningkatkan kualiti kod, menjadikannya lebih mudah untuk berubah, debug, dan kepercayaan.
Menulis kod Java yang boleh diuji adalah kemahiran kritikal untuk membina aplikasi yang boleh dipelihara dan mantap. Dengan Junit 5 sebagai rangka kerja ujian moden dan mockito untuk kebergantungan mengejek, anda boleh menulis ujian unit yang bersih dan boleh dipercayai yang mengesahkan tingkah laku tanpa bergantung pada sistem luaran. Berikut adalah cara menyusun kod dan ujian anda dengan berkesan.

1. Tulis kod yang boleh diuji: suntikan pergantungan dan gandingan longgar
Asas kod yang boleh diuji adalah suntikan ketergantungan (DI) dan gandingan longgar . Elakkan kebergantungan keras atau panggilan statik yang membuat ujian sukar.
Contoh buruk (sukar untuk diuji):

Pesanan Pesanan Kelas Awam { EmailService EmailService Private = NewService baru (); // ketergantungan keras proses kekosongan awam (perintah pesanan) { // logik EmailService.SendConfirmation (perintah); } }
OrderService
pasangan yang ketat ini ke EmailService
, menjadikannya mustahil untuk menguji process()
tanpa benar -benar menghantar e -mel.
Pendekatan yang baik (boleh diuji dengan DI):

Pesanan Pesanan Kelas Awam { E -melService E -melService Final Private; Pesanan Pesanan Awam (e -melService E -melService) { this.emailservice = e -melService; } proses kekosongan awam (perintah pesanan) { // logik perniagaan EmailService.SendConfirmation (perintah); } }
Sekarang anda boleh menyuntik EmailService
yang dihina semasa ujian menggunakan Mockito.
2. Gunakan Junit 5 untuk ujian berstruktur dan boleh dibaca
Junit 5 menawarkan sintaks moden dengan pengurusan kitaran hayat yang lebih baik dan pernyataan ekspresif.
Contoh kelas ujian:
import org.junit.jupiter.api.*; import statik org.mockito.mockito.*; import statik org.junit.jupiter.api.assertions.*; @TestInstance (testInstance.lifecycle.per_method) kelas orderServiceTest { E -melService EmailService Private; Pesanan pesanan pesanan peribadi; @Beforeach void setup () { e -melService = mock (emailService.class); orderService = Pesanan Pesanan Baru (EmailService); } @Test @DisplayName ("Harus menghantar e -mel pengesahan semasa membuat pesanan") void shouldSendemailonProcess () { // diberikan Pesanan Pesanan = Perintah Baru ("123", 100.0); // Bila OrderService.Process (Order); // kemudian sahkan (e -melService, Times (1)). SendConfirmation (perintah); } @Test @DisplayName ("harus membuang pengecualian untuk pesanan null") void shouldThrowExceptionFornullorder () { // bila & kemudian AssertHrows (IllegalArgumentException.class, () -> { orderService.process (null); }); } }
Ciri -ciri utama Junit 5 yang digunakan:
-
@BeforeEach
- berjalan sebelum setiap ujian (keadaan bersih) -
@Test
- Kaedah ujian Marks -
@DisplayName
- Meningkatkan kebolehbacaan dalam laporan ujian -
assertThrows
- mengesahkan pengecualian yang diharapkan -
verify()
- Memeriksa interaksi dengan mengejek
3. Mengejutkan ketergantungan dengan mockito
Mockito membolehkan anda mensimulasikan perkhidmatan luaran (contohnya, pangkalan data, API, e -mel) supaya ujian unit anda berjalan pantas dan mengasingkan tingkah laku.
Corak mockito biasa:
- Penciptaan Mock:
mock(ClassName.class)
- Kaedah Stubbing:
when(mock.method()).thenReturn(value)
- Mengesahkan Interaksi:
verify(mock).method()
Contoh: Menanggalkan panggilan repositori
UserService Kelas Awam { Userrepository UserRepository akhir swasta; Public Userservice (userrepository userrepository) { this.userrepository = userrepository; } pengguna awam findUserById (ID String) { Kembalikan userrepository.findbyId (ID) .orelsethrow (() -> New UsernotFoundException ("Pengguna tidak dijumpai")); } }
Uji dengan Mockito:
@Test @DisplayName ("harus mengembalikan pengguna apabila ditemui di repositori") void hendaklahReturnuserWhenFound () { // diberikan Userrepository userrepository = mock (userrepository.class); Pengguna MockUser = pengguna baru ("1", "Alice"); apabila (userrepository.findbyId ("1")). thenReturn (optional.of (mockUser)); UserService userService = New userService (userRepository); // Bila Hasil Pengguna = UserService.FindUserById ("1"); // kemudian AssertEquals ("Alice", result.getName ()); sahkan (userrepository) .findbyId ("1"); }
Anda hanya menguji logik dalam UserService
, bukan pangkalan data sebenar.
4. Amalan terbaik untuk ujian yang bersih dan boleh dipelihara
Ikuti garis panduan ini untuk memastikan ujian anda berkesan:
Gunakan nama ujian deskriptif
Lebih sukashouldThrowExceptionWhenOrderIsNull()
overtestProcess()
.Ikuti corak AAA
Mengatur ujian ke dalam mengatur , bertindak , menegaskan blok untuk kejelasan.Elakkan ujian perincian pelaksanaan
Uji kaedah yang dilakukan, bukan bagaimana ia melakukannya. Jangan mengesahkan kaedah peribadi dalaman.Pastikan ujian bebas dan pantas
Tiada keadaan bersama antara ujian. Gunakan@BeforeEach
atau kaedah kilang sebaliknya.Jangan terlalu mengejek
Hanya mengejek kebergantungan luaran. Jangan mengejek objek nilai atau utiliti mudah.Kes kelebihan ujian
Input null, koleksi kosong, pengecualian - ini adalah titik kegagalan biasa.
Pemikiran terakhir
Menulis kod Java yang boleh diuji bukan sekadar menambah ujian -ini mengenai merancang kelas anda dengan kesesuaian dalam fikiran. Gunakan suntikan ketergantungan, komposisi memihak kepada instantiasi, dan kebimbangan berasingan secara bersih.
Dengan Junit 5 dan Mockito, anda mendapat alat yang kuat untuk:
- Tulis ujian ekspresif dan boleh dibaca
- Mengasingkan unit tingkah laku
- Mensimulasikan kebergantungan dengan selamat
Hasilnya? Kod yang lebih mudah untuk diubah, debug, dan kepercayaan.
Pada asasnya, jika anda tidak dapat mengujinya dengan mudah, memikirkan semula reka bentuk.
Atas ialah kandungan terperinci Menulis kod Java yang boleh diuji dengan Junit 5 dan Mockito. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Anotasi rangka kerja Mockito memudahkan penjanaan stub dan proses pengesahan: @Mock: menjana dan mengurus objek tiruan secara automatik. @Captor: Tangkap nilai parameter yang dihantar kepada kaedah olok-olok. @InjectMocks: Menyuntik objek olok-olok secara automatik ke dalam kelas yang diuji. @Spy: Cipta beberapa objek stub dan kekalkan pelaksanaan kaedah asal.

Dengan populariti Internet, pembangunan back-end Java telah menjadi bidang yang penting. Dalam proses pembangunan, ujian unit ialah langkah yang sangat kritikal, dan Mockito ialah alat simulasi ujian unit API yang sangat baik. Artikel ini akan memperkenalkan cara menggunakan Mockito dalam pembangunan back-end Java. Apa itu Mockito? Mockito ialah rangka kerja Java yang menyediakan keupayaan simulasi ujian unit API dalam bentuk objek Mock. Objek olok-olok merujuk kepada beberapa objek maya yang tingkah lakunya ditetapkan oleh kami

Pengenalan API RESTful menjadi semakin popular, jadi memastikan keteguhannya menjadi kritikal. Ujian unit ialah cara yang berkesan untuk mengesahkan kefungsian dan gelagat kod anda, terutamanya untuk API RESTful. Artikel ini akan menerangkan cara menggunakan JAX-RS dan rangka kerja ujian unit seperti Mockito dan RESTAssured untuk menguji kod RESTful. Pengenalan kepada JAX-RS JAX-RS ialah API Java untuk membina API RESTful. Ia menyediakan satu set anotasi dan kelas untuk menentukan sumber dan mengendalikan permintaan dan respons HTTP. Menggunakan JAX-RS, pembangun boleh mencipta perkhidmatan RESTful dengan mudah yang boleh berkomunikasi dengan pelbagai pelanggan. ujian unit

Pengenalan kepada Mockito Apabila memanggil kaedah objek olok-olok, kaedah sebenar tidak akan dilaksanakan, tetapi nilai lalai jenis pulangan, seperti objek mengembalikan null, int mengembalikan 0, dsb. Jika tidak, kaedah ditentukan dengan menentukan bila (kaedah).thenReturn(value) Pulangan nilai. Pada masa yang sama, objek olok-olok boleh dikesan dan kaedah pengesahan boleh digunakan untuk melihat sama ada ia telah dipanggil. Objek pengintip akan melaksanakan kaedah sebenar secara lalai, dan nilai pulangan boleh ditindih melalui when.thenReturn. Ia boleh dilihat bahawa selagi olok-olok mengelak daripada melaksanakan beberapa kaedah dan terus mengembalikan nilai yang ditentukan, ia adalah mudah untuk ujian lain. Kes ujian perkhidmatan memerlukan kebergantungan junitjunit4.1

Mockito dan JUnit bergabung tenaga untuk meningkatkan kecekapan ujian unit: Mockito membenarkan penciptaan stub ujian dan objek olok-olok untuk mengesahkan interaksi kod yang dijangkakan. JUnit menyediakan rangka kerja untuk membuat penulisan ujian dan berjalan lebih mudah. Apabila digunakan bersama, anda boleh membuat ujian yang sangat mudah dibaca dan boleh diselenggara yang mengesahkan ketepatan kod anda dengan berkesan.

Langkah-langkah untuk menguji fungsi Java menggunakan Mockito: Tambah kebergantungan Mockito. Cipta objek olok-olok dan tetapkan tingkah laku olok-olok. Panggil fungsi untuk diuji. Tegaskan kelakuan yang dijangkakan bagi sesuatu fungsi. Gunakan verify() untuk mengesahkan interaksi simulasi.

Memandangkan pembangunan perisian terus berkembang, pembangunan dipacu ujian (TDD) telah menjadi model pembangunan yang semakin popular. Dalam proses TDD, ujian menjadi teras kepada proses pembangunan, dan JUnit dan Mockito ialah dua rangka kerja ujian yang biasa digunakan. Dalam pembangunan PHP, bagaimana untuk menggunakan JUnit dan Mockito untuk TDD? Pengenalan terperinci akan diberikan di bawah. 1. Pengenalan kepada JUnit dan Mockito JUnit ialah rangka kerja ujian untuk bahasa Java. Ia boleh membantu Java

Pengenalan JUnit ialah rangka kerja sumber terbuka untuk ujian unit kod Java, yang diasaskan pada tahun 1997 oleh Erich Gamma dan Kent Beck. Ia membolehkan pembangun menulis kes ujian yang mengesahkan ketepatan kod. Melalui ujian unit, pembangun boleh memastikan bahawa kod berfungsi seperti yang diharapkan pada peringkat unit individu, dengan itu meningkatkan keteguhan dan kebolehpercayaan kod. Penggunaan Asas Kes ujian JUnit ialah kaedah beranotasi dengan @Test, yang biasanya bermula dengan ujian. Ia mengandungi bahagian berikut: Persediaan: Dalam kaedah @Sebelum, tetapkan status yang diperlukan untuk setiap kes ujian. Ujian: Dalam kaedah @Test, laksanakan logik yang akan diuji dan sahkan keputusannya. Pembersihan: Dalam kaedah @After, dalam setiap kes ujian
