kata kunci kosong
Bagian ini menjelaskan cara mendeklarasikan dan memanggil metode void.
Contoh berikut mendeklarasikan metode bernama printGrade dan memanggilnya untuk mencetak nilai yang diberikan.
Contoh
public class TestVoidMethod { public static void main(String[] args) { printGrade(78.5 } public static void printGrade(skor ganda) { if (skor >= 90.0) { System.out.println('A' } else if (skor >= 80,0) { System.out.println('B'); else if (skor >= 70.0) { Sistem.keluar.println('C'); lain jika (skor >= 60,0) { Sistem.keluar.println('D'); lain { Sistem.keluar.println('F'); }}
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
C
Metode printGrade di sini adalah metode tipe void dan tidak mengembalikan nilai.
Panggilan ke metode void harus berupa pernyataan. Oleh karena itu, ini disebut sebagai pernyataan pada baris ketiga metode utama. Sama seperti pernyataan apa pun yang diakhiri dengan titik koma.
Metode tunggal untuk menguji tipe kosong
Lapisan Layanan Java akan memiliki banyak metode tipe kosong, seperti simpan* dan perbarui*. Metode ini hanya melakukan beberapa pembaruan dan tidak akan memiliki nilai kembalian. Tes tunggal tidak dapat ditulis berdasarkan nilai kembalian metode dan bisa hanya gunakan metode khusus.
Lingkungan untuk metode ini: Mockito, testng
Metode yang diuji:
Metode VOID yang ingin Anda uji
@Override public void updateRuleName(Long ruleId, String newRuleName, Long ucId) { Assert.notNull(ruleId, "ID aturan tidak boleh Null"); Assert.notNull(newRuleName, "Nama aturan tidak boleh Null"); notNull( ucId, "UCID operator tidak boleh Null"); String cleanNewRuleName = StringUtils.trim(newRuleName); if (StringUtils.isBlank(cleanNewRuleName)) { throw new IllegalArgumentException("Nama aturan baru tidak boleh kosong" } // Objek aturan kueri Aturan aturan = queryRuleById(ruleId); = aturan) { throw new IllegalDataException("Aturan tidak ditemukan"); rule.setRuleId(ruleId); rule.setRuleName(cleanNewRuleName); rule.setUpdateUcid(ucId); rule.setUpdateTime(ruleDao.updateSelective(rule );
Metode pengujian:
uji metode pengembalian batal
@Test public void testUpdateRuleName() { Long ruleId = 1L; String newRuleName = "newRuleName"; Long ucId = 123L; Daftar<Rule> aturan = new ArrayList<Rule>(); ((byte) DBValueSetting.RULE_STATUS_TAKE_EFFECT); aturan.tambahkan(aturan); Objek aturan kueri Map<String, Object> params = new HashMap<String, Object>(); params.put("ruleId", ruleId); .doAnswer(Jawaban baru<Objek>() { jawaban Objek publik(doa InvocationOnMock) {// Breakpoint 2: Aturan aturan = (Aturan) pemanggilan.getArguments()[0]; Assert.assertTrue(rule.getRuleName().equals("newRuleName")); Mockito.any(Rule.class)); // Breakpoint 1: Jalankan di sini terlebih dahulu ruleService.updateRuleName(ruleId, NamaAturan baru, ucId); }
Seperti yang ditunjukkan dalam komentar, jika dua breakpoint ditambahkan, baris panggilan terakhir akan dieksekusi terlebih dahulu selama eksekusi. Selama eksekusi endpoint 1, stub dari endpoint 2 akan dieksekusi . Buka parameter masukan eksekusi metode dan lakukan verifikasi Tegaskan pada parameter masukan untuk mencapai tujuan;
new Anwer adalah antarmuka dengan hanya satu metode, yang digunakan untuk mengatur entri eksekusi proxy untuk pemanggilan metode.
Implementasi doAnswer
antarmuka publik Jawaban<T> { /** * @param pemanggilan pemanggilan pada tiruan. * * @mengembalikan nilai yang akan dikembalikan * * @throws Throwable yang dapat dilempar */ T menjawab (invokasi InvocationOnMock) throws Throwable; }
Ketika kode dieksekusi ke "ruleDao.updateSelective(rule);", pencegat yang dipanggil untuk objek tiruan akan dipicu. Di pencegat, proksi dinamis akan dibuat. Pemanggilan proksi dinamis adalah metode yang tercakup dalam yang baru Menjawab;
Dengan menggunakan metode intersepsi dan proxy, pengaturan dan perolehan parameter input dan output dari metode objek tiruan direalisasikan. Dengan menggunakan metode ini, panggilan kelas eksekusi di dalam metode VOID dapat diverifikasi.