Kaedah persendirian ujian java ditakrifkan sebagai kaedah yang mempunyai pengubah suai akses peribadi dan dihadkan untuk diakses dalam kelas penentu sahaja dan tidak kelihatan dalam kelas anak mereka kerana kaedah tersebut tidak layak untuk ditindih, namun, kami boleh menentukan kaedah dengan nama yang sama dalam kelas kanak-kanak dan boleh mengakses dalam kelas induk, juga boleh menguji kaedah persendirian dengan membuat akses pakej kaedah persendirian yang membolehkan kami mengujinya secara langsung dengan JUnit dari kelas ujian dalam pakej yang sama tetapi ujian kaedah persendirian dalam SuiteRunner adalah lebih mudah daripada menguji dalam JUnit.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sama ada anda menggunakan JUnit atau SuiteRunner, kami mempunyai empat pendekatan asas untuk menguji kaedah peribadi,
Kadangkala kaedah persendirian melakukan tugas yang sangat rumit dan ujian harus diuji dengan baik supaya kami tidak mahu pengguna mempunyai akses kepada kaedah ini kerana kaedah persendirian perlu dilindungi.
Kaedah persendirian tidak dapat menguji secara tidak langsung tetapi hanya kesannya terhadap kaedah awam yang memanggilnya. Menguji kaedah persendirian mungkin menunjukkan bahawa kaedah tersebut dipindahkan ke kelas lain yang membantu/menyokong kebolehgunaan semula.
Jika kami mengekstrak kaedah persendirian yang telah berfungsi dan mempunyai liputan ujian unit yang baik, maka yang sudah wujud dalam ujian unit yang cukup untuk diuji jadi kami tidak perlu menulis lebih banyak ujian unit untuk kaedah persendirian. Tetapi jika kita mahu menulis kaedah persendirian sebelum kaedah panggilannya dan kita mahu menulis ujian unit sebelum menulis kaedah persendirian.
Contoh
public class testClass { private String testMethod(String s) { return s; } }
Contoh contoh di atas hanya untuk menguji kaedah persendirian. Jika kita mempunyai kelas 'testClass' maka ia dipanggil dengan kaedah sebagai 'testMethod( )', maka kaedah itu adalah peribadi dan dengan menghantar rentetan atau objek kita boleh mengembalikan nilainya.
Memberi akses pakej kaedah berfungsi dengan baik untuk menguji kaedah persendirian dengan JUnit tetapi ia memerlukan sedikit kos. Apabila kaedah mempunyai pengubah akses peribadi maka ia adalah sebahagian daripada pelaksanaan kelas. Kita boleh mengabaikan kaedah jika kita hanya cuba menggunakan kelas dari kelas lain dalam pakej dan kita boleh memikirkannya dengan menggunakan kaedah akses pakej. Selain itu, ujian kaedah bukan awam bagi kelas boleh dilakukan dengan menggunakan pakej akses kaedah.
Cara pertama untuk menjadikan pakej kaedah peribadi tanpa pengubah suai akses dan meletakkan ujian ke dalam pakej yang sama, ini adalah cara biasa tetapi masih, jika kita mahukan kod lain maka cara kedua ialah menjadikan kaedah itu awam.
Perkara ketiga tentang menguji kaedah persendirian dalam java ialah penggunaan kelas ujian bersarang, ia boleh dilakukan dengan meletakkan kelas statik di dalam kelas pengeluaran yang sedang diuji. Kelas bersarang mempunyai akses kepada ahli persendirian kelas tertutupnya, ia akan dapat menggunakan kaedah persendirian secara langsung. Kelas statik itu sendiri boleh menjadi akses pakej, membenarkan ia menjadi sebahagian beban ujian kotak putih.
Kelemahan kelas ujian bersarang ini ialah, jika kami tidak mahu kelas bersarang boleh diakses dalam fail JAR jabatan kami, maka kami perlu melakukan kerja tambahan untuk mengekstraknya. Ini mungkin bermasalah kerana penganalisis kualiti akan membuat perubahan dalam kod sumber.
Sekarang datang ke arah penggunaan refleksi seterusnya. Kelebihan menggunakan refleksi untuk menguji kaedah persendirian ialah ia menyediakan pemisahan bersih kod ujian dan kod pengeluaran. Seperti yang telah kita lihat dalam pendekatan kelas bersarang bahawa ujian tidak perlu diuji di dalam kelas, di mana kelas sedang diuji tetapi ia boleh diletakkan bersama ujian lain yang menggunakan tahap pakej dan kaedah awam kelas. Memandangkan kami menggunakan kelas bersarang maka kami tidak perlu menambah sebarang kelas bersarang tambahan pada tahap akses pakej.
Refleksi ialah API yang digunakan untuk memeriksa atau mengubah suai gelagat kaedah, kelas, antara muka pada masa jalankan. Kelemahan penggunaan pantulan ialah kod ujian jauh lebih membosankan kerana ia menggunakan API pantulan.
Contoh: Program Java untuk menerangkan penggunaan pantulan
Kod:
import java.lang.reflect.Method; import java.lang.reflect.Field; class Test { private String s; public Test() { s = "Java Testing Methods"; } public void method1() { System.out.println("The string is " + s); } public void method2(int n) { System.out.println("The number is " + n); } private void method3() { System.out.println("Private method invoked"); } } class Reflect { public static void main(String args[]) throws Exception { Test obj = new Test(); Class cls = obj.getClass(); System.out.println("The name of class is " + cls.getName()); System.out.println("The public methods of class are : "); Method[] methods = cls.getMethods(); for (Method method:methods) System.out.println(method.getName()); Method methodcall1 = cls.getDeclaredMethod("method2", int.class); methodcall1.invoke(obj, 19); Field field = cls.getDeclaredField("s"); field.setAccessible(true); field.set(obj, "JAVA"); Method methodcall2 = cls.getDeclaredMethod("method1"); methodcall2.invoke(obj); Method methodcall3 = cls.getDeclaredMethod("method3"); methodcall3.setAccessible(true); methodcall3.invoke(obj); } }
Output:
Dalam program java di atas, pertama, kita perlu mengimport pakej java.lang kemudian mencipta medan peribadi dalam kelas, pembina juga mencipta. Kaedah1() telah diambil sebagai kaedah awam tanpa hujah kemudian mencipta kaedah2() juga kaedah awam tetapi dengan hujah integer dan kaedah persendirian method3 telah dibatalkan dan tiga kaedah di atas dipanggil dalam kelas Reflect dan keluar diberikan di atas tangkapan skrin.
Dalam artikel ini, kami membuat kesimpulan bahawa kami tidak seharusnya menguji kaedah persendirian secara langsung, tetapi hanya kesannya terhadap kaedah awam yang memanggilnya. Selain itu, kami membuat kesimpulan bahawa ujian itu hanya perlu mengakses antara muka awam kelas. Jika kami menguji kaedah persendirian kemudian susun kod reflektif ke dalam kelas statik persendirian.
Atas ialah kandungan terperinci Kaedah Persendirian Ujian Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!