Rangkaian pengujian yang ditulis dengan baik akan memiliki beberapa pengujian untuk fitur tertentu. Dengan mengelompokkan fitur terkait, Anda dapat menyatakan hubungan antara beberapa grup pengujian. Salah satu manfaat utama pengelompokan kelas pengujian unit adalah dapat mengurangi jumlah kode pengujian yang Anda tulis, karena pengujian yang dikelompokkan berbagi sumber daya.

JUnit 5 memungkinkan Anda membuat pengujian bersarang menggunakan anotasi @Nested. Dalam artikel ini, Anda akan mempelajari apa itu anotasi @Nested dan cara menggunakannya.

Apa itu Tes Bersarang?

Anotasi @Nested JUnit menandakan bahwa kelas yang diasosiasikan dengannya adalah kelas dalam, yang merupakan anggota dari kelas lain. Pengujian bersarang adalah kelas pengujian yang berisi anotasi @Nested, karena ini berarti ada satu (atau lebih) kelas dalam di dalam kelas pengujian tingkat atas. Kelas bersarang dapat muncul di dalam kelas tingkat atas, atau di dalam kelas yang juga bersarang.

Membuat Kelas Java untuk Diuji

instagram viewer

Kelas uji bersarang mewarisi semua fitur dari kelas induknya. Oleh karena itu, waktu terbaik untuk membuat pengujian bersarang adalah saat ada pengelompokan logis kasus uji atau saat satu kasus uji memiliki fitur yang berbeda. Contoh bagusnya adalah saat Anda ingin menguji kemampuan kelas untuk membuat objek yang berguna. Contoh lain adalah ketika satu metode memiliki dua atau lebih tujuan.

Berikut adalah kelas contoh yang mungkin Anda gunakan dalam aplikasi ritel, yang menunjukkan cara membuat pengujian bersarang.

publikkelasPelanggan{
terlindungint ID Pelanggan;
terlindung String namapelanggan;
terlindung String kode pelanggan;

// konstruktor default
publikPelanggan(){
ini.customerId = 0;
ini.namapelanggan = "";
ini.customerCode ="";
}

// konstruktor utama
publikPelanggan(int customerId, String namapelanggan, String kodepelanggan){
ini.customerId = customerId;
ini.namapelanggan = namapelanggan;
ini.customerCode = kodepelanggan;
}

// salin konstruktor
publikPelanggan(Pelanggan pelanggan){
ini.customerId = pelanggan.customerId;
ini.customerName = pelanggan.customerName;
ini.customerCode = pelanggan.customerCode;
}

// getter dan setter
publikintgetCustomerId(){
kembali ID Pelanggan;
}

publikruang kosongsetCustomerId(int ID Pelanggan){
ini.customerId = customerId;
}

publik Rangkaian getCustomerName(){
kembali Nama Pelanggan;
}

publikruang kosongsetNamaPelanggan(String namapelanggan){
ini.namapelanggan = namapelanggan;
}

publik Rangkaian getCustomerCode(){
kembali Kode pelanggan;
}

publikruang kosongsetCustomerCode(String kode pelanggan){
ini.customerCode = kodepelanggan;
}

// tentukan persentase diskon pelanggan berdasarkan jenis pelanggan
publikdobelTipe pelanggan(String kode pelanggan){
dobel diskon = 0;

jika (customerCode.toLowerCase().equals("pra")) {
diskon = 0.10;
} kalau tidakjika (customerCode.toLowerCase().equals("gen")) {
diskon = 0.02;
} kalau tidakjika (customerCode.toLowerCase().equals("baru")) {
diskon = 0.05;
}

kembali diskon;
}

// tentukan jumlah total pelanggan berdasarkan jenis pelanggan
publikdobelTotal keseluruhan(dobel total){
dobel diskon = jenispelanggan (Kodepelanggan);
dobel discountPercentage = total * diskon;
dobel finalTotal = total - Persentasediskon;
kembali jumlah akhir;
}
}

Kelas Pelanggan ini berisi semua komponen Kelas Java, lengkap dengan dua metode.

Membuat Pengujian Bersarang Dengan JUnit 5

Kelas Pelanggan memiliki beberapa konstruktor, getter, dan setter, dan dua metode. Anda dapat membuat kelas bersarang (di dalam kelas pengujian Pelanggan) yang membuat objek Pelanggan baru dan menguji semua komponennya.

imporstatisorg.junit.Jupiter.api.Pernyataan.*;

impororg.junit.Jupiter.api.Nama tampilan;
impororg.junit.Jupiter.api.Bersarang;
impororg.junit.Jupiter.api.Tes;

@DisplayName("Kelas Uji Pelanggan Menampilkan Cara MembuatBersarang Tes.")
kelasUji Pelanggan{
terlindungint id pelanggan = 301;
dilindungi String namapelanggan = "Mike Wilson";
dilindungi String customerCode = "Pra";
terlindungdobel jumlah = 600;

@Bersarang
@Nama tampilan("Kelas Pengujian Bersarang Pembangun Pelanggan Dalam Kelas Pengujian Tingkat Atas")
kelasPelangganBuilderTest{
pelanggan pelanggan = baru Pelanggan (customerId, customerName, customerCode);
dobel grandTotal = pelanggan.grandTotal (total);

@Tes
@Nama tampilan("Menguji Pelanggan's Konstruktor Kelas, Getter dan Setter, dan Metode.")
ruang kosongcustomerBuilder(){
menegaskanSemua(() -> {
menegaskanEquals(ID Pelanggan, pelanggan.getCustomerId());
menegaskanEquals(Nama Pelanggan, pelanggan.getNamaPelanggan());
menegaskanEquals(Kode pelanggan, pelanggan.getKodePelanggan());
menegaskanEquals(0.10, pelanggan.Tipe pelanggan(Kode pelanggan));
menegaskanSama dengan (540, Total keseluruhan);
});
}
}
}

Kelas CustomerTest adalah kelas pengujian tingkat atas untuk kelas CustomerBuilderTest bersarang. CustomerBuilderTest membuat objek Pelanggan baru dan menguji komponennya menggunakan tes penegasan.

Menjalankan kelas uji CustomerTest menghasilkan hasil uji sukses berikut ini:

Nama-nama kelas pengujian dan metode pengujian bersifat deskriptif dan komprehensif, berkat Anotasi @DisplayName.

Mengetahui Cara Menguji Perangkat Lunak itu Penting

Teknologi merupakan aspek penting dalam kehidupan sehari-hari bagi kebanyakan orang. Taruhan untuk membuat perangkat lunak yang melakukan persis seperti yang seharusnya dilakukan tidak pernah setinggi ini.

Mobil self-driving yang salah menghitung kedekatannya dengan objek lain dapat menyebabkan kecelakaan besar. Oleh karena itu, Anda perlu menguji aplikasi Anda di setiap tahap pengembangannya.