Heim > Java > javaLernprogramm > Hauptteil

Lerntutorial zur Void-Methode in der Java-Programmierung

高洛峰
Freigeben: 2017-01-22 10:11:39
Original
1807 Leute haben es durchsucht

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 Punktzahl 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');
   }
   else {
     System.out.println('F');
   }
  }
}
Nach dem Login kopieren

Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:

C
Nach dem Login kopieren

Die printGrade-Methode Hier ist eine Methode vom Typ „void“, die keinen Wert zurückgibt.
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.

Einzelner Test von Methoden vom Typ „Void“
Die Serviceschicht von Java verfügt über viele Methoden vom Typ „Void“, z. B. „Save*“ und „Update*“. Diese Methoden führen nur einige Aktualisierungen durch und geben keinen Wert zurück. Tests können nicht geschrieben werden basierend auf dem Rückgabewert der Methode und kann nur spezielle Methoden verwenden;

Umgebung dieser Methode: Mockito, testng

Zu testende Methode:

Möchte sein getestete VOID-Methode

@Override
  public void updateRuleName(Long ruleId, String newRuleName, Long ucId) {
    Assert.notNull(ruleId, "规则ID不能为Null");
    Assert.notNull(newRuleName, "规则名称不能为Null");
    Assert.notNull(ucId, "操作人的UCID不能为Null");
     
    String cleanNewRuleName = StringUtils.trim(newRuleName);
    if (StringUtils.isBlank(cleanNewRuleName)) {
      throw new IllegalArgumentException("新的规则名称不能为空");
    }
     
    // 查询规则对象
    Rule rule = queryRuleById(ruleId);
    if (null == rule) {
      throw new IllegalDataException("没有查到该规则");
    }
     
    rule.setRuleId(ruleId);
    rule.setRuleName(cleanNewRuleName);
    rule.setUpdateUcid(ucId);
    rule.setUpdateTime(new Date());
     
    ruleDao.updateSelective(rule);
  }
Nach dem Login kopieren

Testmethode:

vom Test zurückgegebene void-Methode

@Test
  public void testUpdateRuleName() {
    Long ruleId = 1L;
    String newRuleName = "newRuleName";
    Long ucId = 123L;
     
    List<Rule> rules = new ArrayList<Rule>();
    Rule rule = new Rule();
    rule.setRuleStatus((byte) DBValueSetting.RULE_STATUS_TAKE_EFFECT);
    rules.add(rule);
     
    // 查询规则对象
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("ruleId", ruleId);
    Mockito.when(ruleDao.queryRulesByCondition(params)).thenReturn(rules);
     
    Mockito.doAnswer(new Answer<Object>() {
      public Object answer(InvocationOnMock invocation) {
        // 断点2:这里随后执行
        Rule rule = (Rule) invocation.getArguments()[0];
        Assert.assertTrue(rule.getRuleName().equals("newRuleName"));
        return null;
      }
    }).when(ruleDao).updateSelective(Mockito.any(Rule.class));
     
    // 断点1:先执行到这里
    ruleService.updateRuleName(ruleId, newRuleName, ucId);
  }
Nach dem Login kopieren

wie kommentiert As Wenn während des Ausführungsprozesses zwei Haltepunkte hinzugefügt werden, wird die letzte aufrufende Zeile zuerst ausgeführt. Während der Ausführung von Endpunkt 1 wird der Stub von Endpunkt 2 ausgeführt. Zu diesem Zeitpunkt kann die Methode am Haltepunkt 2 abgerufen werden . Führen Sie die Eingabeparameter aus und führen Sie eine Assert-Überprüfung für die Eingabeparameter durch.

Neue Antwort ist eine Schnittstelle mit nur einer Methode, die zum Festlegen des Agentenausführungseingangs für den Methodenaufruf verwendet wird

doAnswer Die Implementierung von

public interface Answer<T> {
  /**
   * @param invocation the invocation on the mock.
   *
   * @return the value to be returned
   *
   * @throws Throwable the throwable to be thrown
   */
  T answer(InvocationOnMock invocation) throws Throwable;
}
Nach dem Login kopieren

Wenn der Code für „ruleDao.updateSelective(rule);“ ausgeführt wird, wird der für das Scheinobjekt aufgerufene Interceptor ausgelöst Interceptor, es wird ein dynamischer Agent erstellt. Der Aufruf des dynamischen Agenten ist die in der neuen Antwort behandelte Methode.

verwendet Abfangen und Proxy, um die Einstellung und Erfassung der Eingabe- und Ausgabeparameter des Scheinobjekts zu realisieren Verwenden Sie diese Methode. Auf diese Weise können Sie den Aufruf der Ausführungsklasse innerhalb der VOID-Methode überprüfen.

Weitere Artikel zum Erlernen von Tutorials zu Void-Methoden in der Java-Programmierung finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!