Rumah >Java >javaTutorial >Bagaimana untuk Menguji Kaedah yang Mencetuskan Panggilan `System.exit()` dalam JUnit?

Bagaimana untuk Menguji Kaedah yang Mencetuskan Panggilan `System.exit()` dalam JUnit?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-14 17:37:02836semak imbas

How to Test Methods that Trigger `System.exit()` Calls in JUnit?

Cara Menangani Kaedah yang Mencetuskan Panggilan System.exit() dalam Ujian JUnit

Kaedah ujian yang menggunakan System.exit() menimbulkan cabaran dalam persekitaran JUnit kerana penamatan JVM. Untuk mengatasi halangan ini, pelbagai penyelesaian telah dicadangkan:

Pengecualian Gantian untuk System.exit()

Derkeiler.com mencadangkan meninggalkan System.exit() dan sebaliknya membuang pengecualian yang tidak disemak. Walaupun JUnit menangkap pengecualian ini, menyerlahkan kegagalan ujian, ia membenarkan pelaksanaan berterusan ujian berikutnya.

Ubah suai JUnit untuk Mencegah System.exit()

Dengan melaksanakan adat Kelas TestCase, NoExitTestCase, pengurus keselamatan boleh digunakan untuk menyekat System.exit() panggilan. Setelah mencetuskan percubaan keluar, SecurityException dilemparkan, membolehkan kes ujian mengendalikan dan mengesahkan status keluar yang dijangkakan.

Peraturan Sistem Leverage

Peraturan Sistem yang diperkenalkan dalam JUnit 4.9 menyediakan mekanisme untuk menguji kod yang berinteraksi dengan java.lang.System. Peraturan ExpectedSystemExit secara khusus membolehkan pengesahan panggilan System.exit(), membenarkan pemeriksaan kod status keluar.

Pertimbangan Tambahan

Apabila menguji kaedah yang menggunakan System.exit( ) dengan Java 21 atau lebih baru, sifat sistem -Djava.security.manager=allow mestilah ditetapkan untuk membolehkan penggunaan pengurus keselamatan.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Kaedah yang Mencetuskan Panggilan `System.exit()` dalam JUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn