Di SpringMVC, kasus uji umum sedang menguji lapisan layanan. Hari ini saya akan mendemonstrasikan cara menggunakan mock springmvc untuk secara langsung menguji kode lapisan pengontrol.
1. Apa tes tiruan itu?
Pengujian tiruan adalah metode pengujian yang menggunakan objek virtual untuk dibuat untuk pengujian untuk objek tertentu yang tidak mudah dibangun atau diperoleh selama proses pengujian.
2. Mengapa menggunakan tes tiruan?
Pengujian dengan objek tiruan terutama digunakan untuk mensimulasikan alat yang tidak mudah dibangun dalam aplikasi (seperti httpservletRequest harus dibangun dalam wadah servlet) atau objek yang relatif kompleks (seperti objek hasil di JDBC) sehingga membuat tes berjalan lancar.
3. Anotasi Umum
Runwith (springjunit4classrunner.class): berarti menggunakan komponen uji pegas untuk pengujian unit;
WebAppConfiguration: Menggunakan anotasi ini akan memungkinkan layanan web saat menjalankan tes unit, dan kemudian mulai memanggil API REST controller, dan kemudian menghentikan layanan web setelah tes unit selesai;
ContextConfiguration: Ada banyak cara untuk menentukan informasi file konfigurasi kacang. Contoh ini menggunakan formulir jalur file. Jika ada beberapa file konfigurasi, informasi dalam tanda kurung dapat dikonfigurasi sebagai array string untuk mewakilinya;
4. Pasang lingkungan pengujian
Kerangka Tes Spring MVC menyediakan dua cara: secara independen menginstal dan mengintegrasikan pengujian lingkungan web (metode ini tidak mengintegrasikan lingkungan web yang sebenarnya, tetapi mensimulasikan dan menguji melalui API mock yang sesuai tanpa memulai server).
Metode Uji Instalasi Independen
Mockmvcbuilders.standalonesetup (objek ... pengontrol): Tentukan satu set pengontrol melalui parameter, sehingga Anda tidak perlu mendapatkannya dari konteks;
Ada dua langkah utama:
(1) Pertama -tama buat pengontrol yang sesuai sendiri dan suntikkan dependensi yang sesuai
(2) Simulasi lingkungan uji MVC melalui mockmvcbuilders.standalonesetup, dan dapatkan mockmvc melalui build
Kodenya adalah sebagai berikut:
Paket com.xfs.test; impor org.junit.assert; impor org.junit.Before; impor org.junit.test; impor org.spramework.test.web.servlet.mockmvc; import org.spramework.test.web.servlet.ruest.rquest.rquespocker; org.springframework.test.web.servlet.result.mockmvcresulthandlers; impor org.springframework.test.web.servlet.result.mockmvcRactmatchers; org.springframework.test.web.servlet.servlet.servlet com.alibaba.fastjson.json; import com.alibaba.fastjson.jsonObject; import com.xfs.web.controller.APIController;/** * Metode Instalasi Independen Springmvc Mock Test * * @Author Admin * * 10:39:49 AM pada November 23, 2017//@Author @ * 10:39:49 AM pada November 23, 2017 @Before public void setup () {apicontroller apicontroller = new apicontroller (); mockmvc = mockmvcbuilders.standalonesetup (apicontroller) .build (); } @Test public void testGetequence () {coba {mvcResult mvcresult = mockmvc.perform (mockmvcrequestBuilders.post ("/API/getSequence") .andexpect (mockmvcresulcatchers.status (). Adalah (200)) .doand (mockmvcResultMatchers.status (). .andreturn (); status int = mvcresult.getResponse (). getStatus (); System.out.println ("Kode Status Permintaan:" + Status); String hasil = mvcresult.getResponse (). GetContentAsstring (); System.out.println ("Antarmuka Mengembalikan Hasil:" + Hasil); JSONObject resultobj = json.parseObject (hasil); // Tentukan apakah bidang keberhasilan di antarmuka kembali ke JSON benar -benar menegaskan. } catch (Exception e) {E.PrintStackTrace (); }}}Hasil permintaan adalah sebagai berikut:
Lingkungan web terintegrasi
Mockmvcbuilders.webappContextSetup (WebApplicationContext Context): Menentukan WebApplicationContext, dan pengontrol yang sesuai akan diperoleh dari konteks dan mockMVC yang sesuai akan diperoleh;
Ada tiga langkah utama:
(1) @WebAppConfiguration: Digunakan dalam lingkungan pengujian, yang berarti bahwa ApplicationContext yang digunakan dalam lingkungan pengujian akan menjadi tipe WebApplicationContext; Nilai menentukan root aplikasi web;
(2) Melalui @Autowired WebApplicationContext WAC: ApplicationContext Container yang disuntikkan ke lingkungan web
(3) Kemudian buat mockmvc melalui mockmvcbuilders.webappcontextsetup (wac) .build () untuk pengujian
Kodenya adalah sebagai berikut:
Paket com.xfs.test; impor org.junit.assert; impor org.junit.beFore; impor org.junit.test; impor org.junit.runner.runwith; impor org.springframework.beans.factory.annotation.Autowired; impor org.springpramework.beans.factory.annotation.Autowired; impor org.springpramework.beans.facpy org.springframework.test.context.contextConfiguration; impor org.springframework.test.context.junit4.abstractjunit4springcontextTests; impor org.springframework.test.context.web.webapponfiguration; org.springframework.test.web.servlet.mockmvc; impor org.springframework.test.web.servlet.request.mockmvcRequestBuilders; impor org.springframework.test.web.servlet.result.mockmcRandRand org.springframework.test.web.servlet.result.mockmvcResultMatchers; impor org.springframework.test.web.servlet.setup.context.webapplicationconcontext; Import; com.alibaba.fastjson.jsonObject;/** * Metode lingkungan web terintegrasi tes mock springmvc * * @author admin * * 23 November 2017 di 11:12:43 AM */@runwith (junit4classrunner.class)@webappconfiguration@contextConfiguration (location = o lokasi "classpath" classpath. AbstractJunit4SpringContextTests {@Autowired Public WebApplicationContext WAC; mockmvc publik mockmvc; sesi mockhttpsession publik; @Before public void sebelum () melempar Exception {mockMvc = mockMvcBuilders.WebAppContextSetup (WAC) .build (); } @Test public void testGetequence () {coba {mvcResult mvcresult = mockmvc.perform (mockmvcrequestBuilders.post ("/API/getSequence") .andexpect (mockmvcresulcatchers.status (). Adalah (200)) .doand (mockmvcResultMatchers.status (). .andreturn (); status int = mvcresult.getResponse (). getStatus (); System.out.println ("Kode Status Permintaan:" + Status); String hasil = mvcresult.getResponse (). GetContentAsstring (); System.out.println ("Antarmuka Mengembalikan Hasil:" + Hasil); JSONObject resultobj = json.parseObject (hasil); // Tentukan apakah bidang keberhasilan di antarmuka mengembalikan JSON benar -benar menegaskan. } catch (Exception e) {E.PrintStackTrace (); }}}Hasil menjalankannya sama dengan tes independen di atas.
Meringkaskan:
Seluruh proses:
1. MockMVC.Porm mengeksekusi permintaan;
2. MockMVCRequestBuilders.get ("/user/1") Membangun permintaan
3. Hasil.
4. Hasil Hasil. Dando menambahkan prosesor hasil untuk menunjukkan apa yang harus dilakukan dengan hasilnya. Misalnya, gunakan mockmvcResulthandlers.print () untuk menampilkan seluruh informasi hasil respons.
5. Hasil.
Seluruh proses tes sangat teratur:
1. Bersiaplah untuk lingkungan pengujian
2. Jalankan permintaan melalui mockmvc
3. Tambahkan pernyataan verifikasi
4. Tambahkan prosesor hasil
5. Dapatkan MVCRESULT untuk pernyataan khusus/buat permintaan asinkron berikutnya
6. Hapus instalan lingkungan pengujian
Referensi: FRAMEK-MVC-MVC
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.