Kata pengantar
Ketika kami belajar Jawa, guru atau buku umum menulis bahwa ada delapan jenis dasar Jawa. Mereka adalah: byte, int, short, long, float, double, char, boolean. Namun, ketika saya membaca Java Bible, "Thinking in Java" pagi ini, saya menemukan bahwa penulis membatalkannya ketika menjelaskan tipe data. Ada sembilan jenis ini. Saya membaca tentang Baidu dan menemukan bahwa beberapa buku juga menulis sembilan jenis dasar Java.
Ada banyak metode tipe void di lapisan layanan Java, seperti Save* dan Update*. Metode -metode ini baru saja diperbarui dan tidak akan memiliki nilai pengembalian. Tes tunggal tidak dapat ditulis berdasarkan nilai pengembalian metode ini, sehingga mereka hanya dapat menggunakan metode khusus;
Lingkungan metode ini: mockito, testng
Metode Diuji:
Jawa
@Override public void updaterulename (long ruleId, string newrulename, long ucid) {assert.notnull (aturanid, "ID aturan tidak bisa null"); Assert.notnull (newrulename, "nama aturan tidak bisa null"); Assert.notnull (ucid, "UCID operator tidak bisa nol"); String cleanNewRuleName = stringutils.trim (newrulename); if (stringutils.isblank (cleanNewrulename)) {lempar IllegalArgumentException baru ("Nama aturan baru tidak dapat kosong"); } // query aturan aturan objek aturan = queryrulebyId (aturanid); if (null == aturan) {lempar ilegaldataException baru ("tidak ada aturan yang ditemukan"); } aturan. aturan.setrulename (cleanNewrulename); aturan.setupDateUcid (UCID); aturan.setupDateTime (tanggal baru ()); ruledao.updateselective (aturan); }Metode Uji:
Uji metode pengembalian java dengan void
@Test public void testupdaterulename () {long aturanid = 1l; String newRulename = "newrulename"; Long ucid = 123l; Daftar <Rancies> aturan = Daftar ArrayList baru <Saturan> (); Aturan aturan = aturan baru (); aturan. aturan.add (aturan); // query peta objek aturan <string, object> params = new HashMap <string, object> (); params.put ("aturanid", aturanid); Mockito.when (ruledao.queryrulesbycondition (params)). ThenReturn (aturan); Mockito.doanswer (Jawaban Baru <Poles> () {Jawaban Objek Publik (InvocationOnMock Invocation) {// Breakpoint 2: aturan aturan = (aturan) Invocation.getArguments () [0]; assert.asserttrue (aturan.getRulename (). Equals ("newrulename")); return null; }). When (ruledao) .updateselective (mockito.any (aturan.class)); // Breakpoint 1: Jalankan di sini First RulesService.updaterulename (aturanid, newrulename, ucid); }Seperti yang ditunjukkan pada komentar, jika dua breakpoint ditambahkan, saluran panggilan terakhir akan dieksekusi terlebih dahulu selama proses eksekusi. Selama pelaksanaan titik akhir 1, rintisan titik akhir 2 akan dieksekusi. Pada saat ini, parameter entri eksekusi metode dapat diperoleh di Breakpoint 2, dan parameter yang masuk dapat dilakukan dengan menegaskan verifikasi untuk mencapai tujuan;
Jawaban baru adalah antarmuka, yang hanya memiliki satu metode, yang digunakan untuk mengatur portal eksekusi proxy untuk panggilan metode.
Doanswer Implementasi Java
Jawaban Antarmuka Publik <T> { /*** @param Doa doa pada mock. * * @return Nilai yang akan dikembalikan * * @throws dapat dilempar yang akan dilemparkan */ t Jawab (InvocationOnmock Invocation) melempar Throwable;} Ketika kode dieksekusi ke " ruleDao.updateSelective(rule); ", seorang pencegat yang menyerukan objek tiruan akan dipicu. Di The Interceptor, proxy dinamis akan dibuat. Doa proxy dinamis adalah metode yang dibahas dalam jawaban baru;
Menggunakan dua metode: intersep dan proxy, pengaturan dan mendapatkan parameter yang masuk dan keluar dari metode objek tiruan diwujudkan. Dengan cara ini, panggilan kelas eksekusi dalam metode void dapat diperiksa;
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini akan membantu studi atau pekerjaan Anda. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi.