In SpringMVC testen die allgemeinen Testfälle die Serviceschicht. Heute werde ich nachweisen, wie das SpringMVC -Mock verwendet wird, um den Controller -Layer -Code direkt zu testen.
1.Was ist Mock -Tests?
Mock -Tests sind eine Testmethode, bei der ein virtuelles Objekt zum Testen für bestimmte Objekte erstellt wird, die während des Testprozesses nicht einfach zu konstruieren oder zu erhalten können.
2. Warum einen Mock -Test verwenden?
Das Testen mit Mock -Objekt wird hauptsächlich verwendet, um Tools zu simulieren, die in Anwendungen nicht einfach zu konstruieren sind (z. B. httpServletRequest müssen in Servlet -Containern konstruiert werden) oder relativ komplexe Objekte (z. B. Folge -Set -Objekte in JDBC), um den Test reibungslos zu machen.
3.. Gemeinsame Anmerkungen
RunWith (SpringJunit4ClasRunner.Class): Mittelwerte mit Feder -Testkomponenten für Unit -Tests;
WebAppConfiguration: Die Verwendung dieser Annotation aktiviert einen Webdienst beim Ausführen von Unit -Tests und ruft dann die REST -API des Controllers auf und stoppt dann den Webdienst nach Abschluss des Unit -Tests.
Kontextkonfiguration: Es gibt viele Möglichkeiten, die Konfigurationsdateiinformationen der Bean anzugeben. In diesem Beispiel wird das Dateipfadformular verwendet. Wenn mehrere Konfigurationsdateien vorhanden sind, können die Informationen in Klammern als Zeichenfolgenarray so konfiguriert werden, dass sie dargestellt werden.
4. Installieren Sie die Testumgebung
Das Spring MVC -Test -Framework bietet zwei Möglichkeiten: unabhängig voneinander installieren und integrieren Sie Webumgebungstests (diese Methode integriert nicht die reale Webumgebung, sondern simuliert und testet die entsprechende Mock -API, ohne den Server zu starten).
Unabhängige Installationstestmethode
MockMvcBuilders.Standalonesetup (Objekt ... Controller): Geben Sie eine Reihe von Controllern durch Parameter an, sodass Sie sie nicht aus dem Kontext erhalten müssen.
Es gibt zwei Hauptschritte:
(1) Erstellen Sie zuerst den entsprechenden Controller selbst und injizieren Sie die entsprechenden Abhängigkeiten
.
Der Code ist wie folgt:
Paket com.xfs.test; import org.junit.assert; import org.junit.before; import org.junit.test; import org.springframework.test.web.servlet.mockmvc; org.springframework.test.web.servlet.result.mockmvcresultHandlers; import org.springframework.test.web.servlet.result.mockmvcresultmatchers; com.alibaba.fastjson.json; import com.alibaba.fastjson.jsonObject; import com.xfs.web.controller.apicontroller;/** * Unabhängige Installationstestmethode Springmvc Mock -Test * * @author admin * 10:39:49 am 23. November 2017, 2017, 2017, 2017 */Public Class Testapion, {privat mockmvc mockcm am 23. November, 2017 */Public class testapione {privat mockmvc MOCKC. @Before public void setup () {apicontroller apicontroller = new apicontroller (); mockmvc = mockmvcbuilders.Standalonesetup (apicontroller) .build (); } @Test public void testgetSequence () {try {mvcresult mvcresult = mockmvc.perform (mockmvcrequestBuilders.post ("/api/Getsequence") .AndExect (MockmvcresultMatchers.Status (). (200). .andreturn (); int status = mvcresult.getResponse (). getStatus (); System.out.println ("Anforderungsstatuscode:" + Status); String result = mvcresult.getResponse (). GetContentAsTring (); System.out.println ("Schnittstelle return Ergebnis:" + Ergebnis); JsonObject resultObj = json.ParseObject (Ergebnis); // Bestimmen Sie, ob das Erfolgsfeld in der Schnittstelle zu JSON zurückkehrt. } catch (Ausnahme e) {e.printstacktrace (); }}}Das Anforderungsergebnis ist wie folgt:
Integrierte Webumgebung
MockMvcbuilders.webappContextSetup (WebApplicationContext -Kontext): Geben Sie WebApplicationContext an, und der entsprechende Controller wird aus dem Kontext erhalten und der entsprechende MockMVC wird erhalten.
Es gibt drei Hauptschritte:
(1) @WebAppConfiguration: In der Testumgebung verwendet, was bedeutet, dass der in der Testumgebung verwendete ApplicationContext vom Typ WebApplicationContext enthält. Wert gibt den Stamm der Webanwendung an.
(2) über @autowired WebApplicationContext WAC: ApplicationContext Container in die Webumgebung injiziert
(3) Dann erstellen
Der Code ist wie folgt:
paket com.xfs.test; import org.junit.assert; import org.junit.before; import org.junit.test; import org.junit.runner.runwith; import org. org.springframework.test.context.contextConfiguration; import org.springframework.test.context.junit4.abstractJunit4springContextTests; importieren org.springframework.test.context.web.webappconfigconfiguration; org.springframework.test.web.servlet.mockmvc; import org.springframework.test.web.servlet.request.mockmvcrequestBuilders; Import org.springFramework.Test.web.Servlet.Result.Result.Mockmvcresult org.springframework.test.web.servlet.result.mockmvcresultMatchers; import org.springframework.test.web.servlet.setup.mockmvcbuilders; import org.springFramework com.alibaba.fastjson.jsonObject;/** * Integrierte Webumgebung Methode SpringMvc Mock Test * * @Author admin * * 23. November 2017 um 11:12:43 Uhr */@Runwith (junit4ClasSrunner.class)@webappconfiguration@contextconfiguration (Local) {"classpathep erweitert abstractJunit4SpringContextTests {@autowired Public WebApplicationContext WAC; public Mockmvc MockMVC; öffentliche MockhttpSession -Sitzung; @Before public void vor () löst Ausnahme aus {mockmvc = mockmvcbuilders.webAppContextSetup (WAC) .build (); } @Test public void testgetSequence () {try {mvcresult mvcresult = mockmvc.perform (mockmvcrequestBuilders.post ("/api/Getsequence") .AndExect (MockmvcresultMatchers.Status (). (200). .andreturn (); int status = mvcresult.getResponse (). getStatus (); System.out.println ("Anforderungsstatuscode:" + Status); String result = mvcresult.getResponse (). GetContentAsTring (); System.out.println ("Schnittstelle return Ergebnis:" + Ergebnis); JsonObject resultObj = json.ParseObject (Ergebnis); // Bestimmen Sie, ob das Erfolgsfeld in der Schnittstelle JSON zurückgibt. } catch (Ausnahme e) {e.printstacktrace (); }}}Die Ergebnisse des Laufs sind die gleichen wie die der oben genannten unabhängigen Tests.
Zusammenfassen:
Der ganze Prozess:
1. Mockmvc.Perform führt eine Anfrage aus;
2. MockMvCrequestBuilders.get ("/user/1") konstruiert eine Anforderung
3. Ergebnisaktionen. Und EXPICT fügt nach der Ausführung Behauptungen hinzu
4. Ergebnisaktionen.Ando fügt einen Ergebnisprozessor hinzu, um anzuzeigen, was mit dem Ergebnis zu tun ist. Verwenden Sie beispielsweise MockMvcresultHandhandlers.print (), um die gesamten Reaktionsergebnissinformationen auszugeben.
5. Ergebnisaktionen.AndReturn bedeutet, dass das entsprechende Ergebnis nach Abschluss der Ausführung zurückgegeben wird.
Der gesamte Testprozess ist sehr regelmäßig:
1. Bereiten Sie sich auf die Testumgebung vor
2. Führen Sie Anfragen über MockMVC aus
3. Verifikationsprüfung hinzufügen
4. Fügen Sie einen Ergebnisprozessor hinzu
5. Mvcresult für benutzerdefinierte Behauptungen erhalten/die nächste asynchrone Anfrage erstellen
6. Deinstallieren Sie die Testumgebung
Referenz: Spring-MVC-Test-Framework
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.