Vorwort
Als wir Java lernten, schrieben Lehrer oder allgemeine Bücher, dass es acht grundlegende Arten von Java gibt. Sie sind: Byte, int, kurz, lang, float, doppelt, char, boolean. Als ich jedoch heute Morgen die Java -Bibel las und in Java in Java dachte, stellte ich fest, dass der Autor sie bei der Erläuterung des Datentyps unglücklich war. Es gibt neun Arten davon. Ich habe auf Baidu gelesen und festgestellt, dass einige Bücher auch neun Grundtypen von Java schreiben.
In der Java-Serviceschicht gibt es viele Void-Typ-Methoden, wie z. B. Speichern* und Update*. Diese Methoden werden nur aktualisiert und haben keinen Rückgabewert. Der einzelne Test kann nicht basierend auf dem Rückgabewert der Methode geschrieben werden, sodass sie nur spezielle Methoden anwenden können.
Die Umgebung dieser Methode: Mockito, testng
Getestete Methoden:
Java
@Override public void updateruleName (Long regeld, String NewRulename, Long Ucid) {assert.notnull (RegelId, "Die Regel -ID kann nicht null sein"); Assert.notnull (NewRulename, "Der Regelname kann nicht null sein"); Assert.notnull (UCID, "Der UCID des Bedieners kann nicht null sein"); String CleanNewrulename = Stringutils.trim (NewRulename); if (Stringutils.isblank (CleanNewrulename)) {neue IllegalArgumentException ("Der neue Regelname kann nicht leer sein"); } // Abfragen Sie die Regelobjekt -Regel Regel = queryRulById (regelId); if (null == regel) {werfen neu illaDataException ("keine Regel gefunden"); } regel.setRuleId (RuleId); regel.setRulename (CleanNewrulename); regel.setupdateucid (ucid); regel.setUpDatetime (neues Datum ()); reguledao.updateSelective (Regel); }Testmethode:
Testen Sie Java mit void Return -Methode
@Test public void testupdaterulename () {long regelId = 1l; String newRulename = "NewRulenName"; Lange ucid = 123L; Liste <Regeln> Regeln = NeuarrayList <Regel> (); Regelregel = neue Regel (); regel.setRulestatus ((byte) dbvaluesetting.rule_status_take_effect); Regeln.Add (Regel); // Abfragen Sie die Regelobjektkarte <string, objekt> params = new HashMap <String, Object> (); params.put ("regeld", regeld); Mockito.when (reguledao.queryRulesByCondition (Params)). Thatreturn (Regeln); Mockito.doanswer (neue Antwort <elements> () {öffentliches Objekt Antwort (IncvocationOnMock Invocation) {// Breakpoint 2: regelregel = (Regel) Invocation.getArgumente () [0]; }). Wenn (reguledao) .UpdateSelective (Mockito.any (regel.class)); // Breakpoint 1: Führen Sie hier First Reterservice.Updaterulename (RuleId, NewRulename, UCID) aus; }Wie in den Kommentaren gezeigt, wird die letzte Anrufzeile zuerst während des Ausführungsprozesses ausgeführt, wenn zwei Haltepunkte hinzugefügt werden. Während der Ausführung von Endpunkt 1 wird der Stub von Endpoint 2 ausgeführt. Zu diesem Zeitpunkt kann der Parameter für Methodenausführungseingabe am Haltepunkt 2 erhalten werden, und der eingehende Parameter kann durch die Überprüfung durchgeführt werden, um den Zweck zu erreichen.
Neue Antwort ist eine Schnittstelle mit nur einer Methode, mit der das Proxy -Ausführungsportal für Methodenaufrufe festgelegt wird.
HER -TERWER -Implementierung Java
öffentliche Schnittstelle Antwort <T> { /*** @param Aufruf der Aufruf auf dem Mock. * * @return Der Wert, der zurückgegeben wird Wenn der Code in " ruleDao.updateSelective(rule); ausgeführt wird", wird ein Interceptor nach dem Scheinobjekt ausgelöst. Im Interceptor wird ein dynamischer Proxy erstellt. Die Aufruf des dynamischen Proxy ist die Methode, die in neuer Antwort behandelt wird.
Mit zwei Methoden: Intercept und Proxy wird die Einstellung und das Erhalten der eingehenden und ausgehenden Parameter der Mock -Objektmethode realisiert. Auf diese Weise kann die Ausführungsklassenaufrufe innerhalb der Void -Methode überprüft werden.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.