Jadual Kandungan
Perangkap biasa dalam ujian fungsi Java
1. Abaikan syarat sempadan
2. 假设输入有效
3. 依赖第三方库时未进行打桩
4. 忘记测试异常
Rumah Java javaTutorial Apakah perangkap biasa ujian fungsi Java?

Apakah perangkap biasa ujian fungsi Java?

Apr 28, 2024 pm 03:48 PM
java Perangkap Ujian

Perangkap biasa yang perlu diketahui apabila unit menguji fungsi Java termasuk: Mengabaikan keadaan sempadan seperti input kosong, nilai maksimum atau minimum. Input diandaikan sah dan input yang tidak sah tidak disahkan. Penumbunan tidak dilakukan apabila bergantung pada perpustakaan pihak ketiga, mengakibatkan ujian tidak stabil. Lupakan tentang pengecualian ujian yang mungkin dilemparkan oleh fungsi.

Apakah perangkap biasa ujian fungsi Java?

Perangkap biasa dalam ujian fungsi Java

Apabila unit menguji fungsi Java, anda perlu memberi perhatian khusus kepada beberapa perangkap biasa, yang mungkin membawa kepada ujian yang tidak lengkap atau tidak boleh dipercayai.

1. Abaikan syarat sempadan

Ujian keadaan sempadan merujuk kepada ujian kelakuan input dan output fungsi di bawah nilai ekstrem. Terlupa untuk menguji keadaan sempadan, seperti input kosong, nilai maksimum atau minimum, boleh menyebabkan kecacatan yang belum ditemui.

Kes praktikal:

@Test
public void testMax() {
    assertTrue(Math.max(2, 5) == 5);
}
Salin selepas log masuk

Ujian ini tidak meliputi kes fungsi Math.max dengan nombor negatif atau 0 sebagai input. Ujian yang lebih komprehensif akan kelihatan seperti ini: Math.max 函数与负数或 0 作为输入的情况。一个更全面的测试应该如下所示:

@Test
public void testMax() {
    assertTrue(Math.max(2, 5) == 5);
    assertTrue(Math.max(0, -5) == 0);
}
Salin selepas log masuk

2. 假设输入有效

测试不应该假设输入总是有效的。开发人员应该考虑无效输入的可能性,并在必要时验证输入。

实战案例:

@Test
public void testSqrt() {
    assertTrue(Math.sqrt(4) == 2.0);
}
Salin selepas log masuk

该测试没有考虑 Math.sqrt 接受负数输入的情况,这会导致 IllegalArgumentException。一个更健壮的测试应该如下所示:

@Test
public void testSqrt() {
    assertTrue(Math.sqrt(4) == 2.0);
    try {
        Math.sqrt(-4);
        fail("Expected IllegalArgumentException");
    } catch (IllegalArgumentException e) {}
}
Salin selepas log masuk

3. 依赖第三方库时未进行打桩

当测试函数依赖于第三方库时,如果不进行打桩,就可能导致测试失败或不稳定。打桩允许模拟第三方库的行为,以控制测试环境。

实战案例:

@Test
public void testSendMail() {
    assertTrue(MailSender.sendMail("to@example.com", "subject", "body"));
}
Salin selepas log masuk

该测试没有打桩 MailSender 类,因此测试依赖于实际发送邮件的行为。这可能导致测试失败,或者在邮件发送失败时导致 flakiness。

4. 忘记测试异常

函数可能抛出异常,而忘记测试这些异常可能会导致错误或不完整的测试覆盖率。

实战案例:

@Test
public void testDivide() {
    assertTrue(Divider.divide(10, 2) == 5);
}
Salin selepas log masuk

该测试没有测试 Divider 类在输入为 0 时抛出的 ArithmeticException

@Test
public void testDivide() {
    assertTrue(Divider.divide(10, 2) == 5);
    try {
        Divider.divide(10, 0);
        fail("Expected ArithmeticException");
    } catch (ArithmeticException e) {}
}
Salin selepas log masuk
2. Anggap input adalah sah 🎜🎜Pengujian seharusnya tidak menganggap bahawa input sentiasa sah. Pembangun harus mempertimbangkan kemungkinan input tidak sah dan mengesahkan input jika perlu. 🎜🎜🎜Kes praktikal: 🎜🎜rrreee🎜Ujian ini tidak mengambil kira kes di mana Math.sqrt menerima input negatif, yang akan menghasilkan IllegalArgumentException. Ujian yang lebih mantap sepatutnya kelihatan seperti ini: 🎜rrreee🎜3 Tiada stub apabila bergantung pada perpustakaan pihak ketiga🎜🎜Apabila fungsi ujian bergantung pada perpustakaan pihak ketiga, jika stub tidak dilakukan, ujian mungkin gagal atau tidak stabil. . Stubbing membolehkan simulasi gelagat perpustakaan pihak ketiga untuk mengawal persekitaran ujian. 🎜🎜🎜Kes praktikal: 🎜🎜rrreee🎜Ujian ini tidak mencantas kelas MailSender, jadi ujian bergantung pada tingkah laku sebenar menghantar e-mel. Ini boleh menyebabkan ujian gagal, atau menyebabkan kekeliruan jika e-mel gagal dihantar. 🎜🎜4 Lupa untuk menguji pengecualian 🎜🎜 Fungsi boleh membuang pengecualian, dan terlupa untuk menguji pengecualian ini boleh membawa kepada pepijat atau liputan ujian yang tidak lengkap. 🎜🎜🎜Kes praktikal: 🎜🎜rrreee🎜Ujian ini tidak menguji ArithmeticException yang dilemparkan oleh kelas Divider apabila input adalah 0. Ujian yang lebih komprehensif akan kelihatan seperti ini: 🎜rrreee

Atas ialah kandungan terperinci Apakah perangkap biasa ujian fungsi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1663
14
Tutorial PHP
1266
29
Tutorial C#
1238
24
Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP vs Python: Memahami Perbezaan PHP vs Python: Memahami Perbezaan Apr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP vs Bahasa Lain: Perbandingan PHP vs Bahasa Lain: Perbandingan Apr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP vs Python: Ciri dan Fungsi Teras PHP vs Python: Ciri dan Fungsi Teras Apr 13, 2025 am 12:16 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri dan sesuai untuk senario yang berbeza. 1.PHP sesuai untuk pembangunan web dan menyediakan pelayan web terbina dalam dan perpustakaan fungsi yang kaya. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan standard yang kuat. Apabila memilih, ia harus diputuskan berdasarkan keperluan projek.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Impak PHP: Pembangunan Web dan seterusnya Impak PHP: Pembangunan Web dan seterusnya Apr 18, 2025 am 12:10 AM

Phphassignificantelympactedwebdevelopmentandextendsbeyondit.1) itpowersmajorplatformslikeworderpressandexcelsindatabaseIntions.2) php'SadaptabilityAldoStoScaleforlargeapplicationFrameworksLikelara.3)

PHP: asas banyak laman web PHP: asas banyak laman web Apr 13, 2025 am 12:07 AM

Sebab mengapa PHP adalah timbunan teknologi pilihan untuk banyak laman web termasuk kemudahan penggunaannya, sokongan komuniti yang kuat, dan penggunaan yang meluas. 1) Mudah dipelajari dan digunakan, sesuai untuk pemula. 2) Mempunyai komuniti pemaju yang besar dan sumber yang kaya. 3) Digunakan secara meluas dalam platform WordPress, Drupal dan lain -lain. 4) Mengintegrasikan dengan ketat dengan pelayan web untuk memudahkan penggunaan pembangunan.

See all articles