[JAVA] Überprüfen Sie das Verhalten, wenn die in der JUnit 4 @ Test-Annotation angegebene Ausnahme auftritt oder nicht auftritt.

Überblick

--Überprüfen Sie das Verhalten, wenn eine Ausnahme in einem Test auftritt oder nicht, in dem eine Ausnahmeklasse angegeben wird, die von der Annotation @Test erwartet wird. --Überprüfen Sie das Verhalten mit dem Beispielprogramm --Verwenden Sie JUnit 4.12

Über die erwartete @ Test-Annotation

Die erwartete @ Test-Annotation macht den Test erfolgreich, wenn die angegebene Ausnahme ausgelöst wird. Der Test schlägt fehl, wenn die angegebene Ausnahme nicht ausgelöst wird.

Test (JUnit API)

Optionally specify expected, a Throwable, to cause a test method to succeed if and only if an exception of the specified class is thrown by the method. If the Throwable's message or one of its properties should be verified, the ExpectedException rule can be used instead.

Beispielprogramm

Quellcodeliste

├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── example
    │               └── Calculator.java
    └── test
        └── java
            └── com
                └── example
                    └── CalculatorTest.java

Maven Build-Datei pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>test</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>

Calculator.java

Weitere Informationen finden Sie in der Beispielklasse unter Erste Schritte · junit \ -team / junit4-Wiki · GitHub.

package com.example;

public class Calculator {
  public int evaluate(String expression) {
    int sum = 0;
    for (String summand : expression.split("\\+"))
      sum += Integer.valueOf(summand);
    return sum;
  }
}

CalculatorTest.java

Eine Testklasse für die Calculator-Klasse.

package com.example;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class CalculatorTest {

  // "1+2+3"Wenn 6 zurückgegeben wird, ist der Test erfolgreich.
  @Test
  public void testEvaluate() {
    Calculator calculator = new Calculator();
    int sum = calculator.evaluate("1+2+3");
    assertEquals(6, sum);
  }

  //Test erfolgreich, wenn eine NullPointerException auftritt
  @Test(expected = NullPointerException.class)
  public void testEvaluateException() {
    Calculator calculator = new Calculator();
    int sum = calculator.evaluate(null);
  }

  //Test erfolgreich, wenn eine NullPointerException auftritt
  // (Der Test schlägt fehl, da er diesmal nicht auftritt)
  @Test(expected = NullPointerException.class)
  public void testEvaluateFailed() {
    Calculator calculator = new Calculator();
    int sum = calculator.evaluate("1+2+3");
  }
}

Führen Sie den Test aus

Führen Sie den Test mit dem Befehl mvn test aus.

$ mvn test
(Unterlassung)
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.CalculatorTest
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.116 sec <<< FAILURE!
testEvaluateFailed(com.example.CalculatorTest)  Time elapsed: 0.017 sec  <<< FAILURE!
java.lang.AssertionError: Expected exception: java.lang.NullPointerException
(Unterlassung)

Results :

Failed tests:   testEvaluateFailed(com.example.CalculatorTest): Expected exception: java.lang.NullPointerException

Tests run: 3, Failures: 1, Errors: 0, Skipped: 0

Sie können sehen, dass der Test der testEvaluateFailed-Methode der CalculatorTest-Klasse fehlgeschlagen ist. Ich habe "@Test (expected = NullPointerException.class)" geschrieben, aber NullPointerException ist nicht aufgetreten.

Referenzmaterial

Recommended Posts

Überprüfen Sie das Verhalten, wenn die in der JUnit 4 @ Test-Annotation angegebene Ausnahme auftritt oder nicht auftritt.
Festlegen, wann in junit "Der Konstruktor Empty () ist nicht sichtbar" auftritt
Im Warndialog beim Starten des Applets funktioniert die Prüfung "Beim nächsten Mal nicht anzeigen" nicht
[JUnit] Testen Sie die ausgelöste Ausnahme