void-Schlüsselwort
In diesem Abschnitt wird erläutert, wie eine void-Methode deklariert und aufgerufen wird.
Das folgende Beispiel deklariert eine Methode namens printGrade und ruft sie auf, um die angegebene Note zu drucken.
Beispiel
public class TestVoidMethod { public static void main(String[] args) { printGrade(78.5); } public static void printGrade(double score) { if (score >= 90.0) { System.out.println('A'); else if (score >= 80,0) { System.out.println('B'); else if (score >= 70,0) { System.out.println('C'); } else if (score >= 60,0) { System.out.println('D' }); }}
Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:
C
Die printGrade-Methode hier ist eine Methode vom Typ „void“ und gibt keinen Wert zurück.
Ein Aufruf einer void-Methode muss eine Anweisung sein. Daher wird es als Anweisung in der dritten Zeile der Hauptmethode aufgerufen. Genau wie jede Aussage, die mit einem Semikolon endet.
Einzelne Methode zum Testen des Hohlraumtyps
Die Service-Schicht von Java verfügt über viele Methoden vom Typ void, z. B. save* und update*. Diese Methoden führen nur einige Aktualisierungen durch und haben keinen Rückgabewert. Der einzelne Test kann nicht auf der Grundlage des Rückgabewerts der Methode geschrieben werden Verwenden Sie nur spezielle Methoden.
Umgebung für diese Methode: Mockito, testng
Getestete Methoden:
Die VOID-Methode, die Sie testen möchten
@Override public void updateRuleName(Long RuleId, String newRuleName, Long ucId) { Assert.notNull(ruleId, „Die Regel-ID darf nicht Null sein“); Assert.notNull(newRuleName, „Der Regelname darf nicht Null sein“); notNull( ucId, „Die UCID des Operators darf nicht Null sein“); String cleanNewRuleName = StringUtils.trim(newRuleName); if (StringUtils.isBlank(cleanNewRuleName)) { throw new IllegalArgumentException("Der neue Regelname darf nicht leer sein"); // Regelobjekt abfragen Rule = queryRuleById(ruleId); if (null = = Regel) { throw new IllegalDataException("Die Regel wurde nicht gefunden" } Rule.setRuleId(ruleId); Rule.setUpdateUcid(ucId(new Date());
Testmethode:
Void-Return-Methodentest
@Test public void testUpdateRuleName() { Long RuleId = "newRuleName"; Long ucId = 123L; List<Rule> Rules = new ArrayList<Rule>(); ((byte) DBValueSetting.RULE_STATUS_TAKE_EFFECT); Rules.add(rule); Abfrageregelobjekt Map<String, Object> params = new HashMap<String, Object>(); params.put("ruleId", RuleId); .doAnswer(new Answer<Object>() { public Object answer(InvocationOnMock invocation) { // Haltepunkt 2: Rule Rule = (Rule) invocation.getArguments()[0]; Assert.assertTrue(rule.getRuleName().equals("newRuleName").when(ruleDao ).updateSelective( Mockito.any(Rule.class)); // Haltepunkt 1: Hier zuerst ausführen RuleService.updateRuleName(ruleId, newRuleName, ucId);
Wie in den Kommentaren gezeigt, wird beim Hinzufügen von zwei Haltepunkten die letzte aufrufende Zeile während der Ausführung zuerst von Endpunkt 1 ausgeführt, und der Stub von Endpunkt 2 kann zu diesem Zeitpunkt am Haltepunkt 2 abgerufen werden . Gehen Sie zu den Eingabeparametern der Methodenausführung und führen Sie eine Assert-Überprüfung für die Eingabeparameter durch, um den Zweck zu erreichen.
new Anwer ist eine Schnittstelle mit nur einer Methode, die zum Festlegen des Proxy-Ausführungseintrags für Methodenaufrufe verwendet wird.
Implementierung von doAnswer
öffentliche Schnittstelle Answer<T> { /** * @param invocation der Aufruf auf dem Mock. * * @return der zurückzugebende Wert * * @throws Throwable der zu werfende Throwable */ T answer(InvocationOnMock invocation) throws Throwable; }
Wenn der Code für „ruleDao.updateSelective(rule);“ ausgeführt wird, wird der für das Scheinobjekt aufgerufene Interceptor ausgelöst. Der Aufruf des dynamischen Proxys ist die in new behandelte Methode Antwort;
Mithilfe von Abfang- und Proxy-Methoden werden die Eingabe- und Ausgabeparameter der Scheinobjektmethode festgelegt und abgerufen. Mit dieser Methode kann der Ausführungsklassenaufruf innerhalb der VOID-Methode überprüft werden.