JUnit / Exceptions/ try-catch

Servus,

ich habe eine vermutlich etwas komische Frage:

Ich habe mich jetzt mit Exceptions befasst. Wie man eigene Exceptions erstellt und wie man try-catch Blöcke nutzt. Was genau hat es jetzt mit JUnit auf sich, wenn man try-catch Blöcke nutzt und eigene Exceptions baut?

Klingt echt komisch, aber mir fehlt es an Verständnis das ganze zusammenzubringen.

Danke
 
Um Code automatisiert zu testen. Du schreibst Tests mit Hilfe von JUnit und lässt diese dann ausführen.
JUnit ist sowohl eine Assertion-Library (formulieren von Erwartungen an zu testenden Code) als auch ein Testtreiber (finden von auszuführenden Tests und ausführen dieser Tests) als auch ein Reporting-Tool für Testerfolge/-fehlschläge.
https://de.wikipedia.org/wiki/JUnit
 
Okay, das ersprart vmtl. jede Menge Arbeit, wenn man automatisch testet. So könnte ich bspw. dann automatisch testen, ob meine Methode immer korrekt ausgeführt wird, oder?

Java:
public class MatheSammlung {
    
    
    public double berechneWurzel(double x) {
        
        double ergebnis;
        if (x <= 0) {
            throw new IllegalArgumentException("Diese Eingabe ist nicht erlaubt");
        }
        else {
            
            ergebnis = Math.sqrt(x);
        
        }
        
        return ergebnis;
        
        
    }
}
  import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class MatheSammlungTest {

    @Test
    void test() {
        MatheSammlung x = new MatheSammlung();
        x.berechneWurzel(4);
        x.berechneWurzel(2);
    }

}
 
Ja, wobei dein Test nichts testet. Ein möglicher Test wäre stattdessen:
Java:
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

class MatheSammlungTest {
  private MatheSammlung x = new MatheSammlung();

  @Test
  void berechneWurzelMitPositivenArgumenten() {
    assertEquals(2.0, x.berechneWurzel(4), 0.0);
    assertEquals(1.4142135623730951, x.berechneWurzel(2), 0.0);
  }

  @Test
  void berechneWurzelMitNegativemArgument() {
    assertThrows(IllegalArgumentException.class,
        () -> x.berechneWurzel(-1), "Diese Eingabe ist nicht erlaubt");
  }
}
By the way: Die Wurzel von 0 ist definiert, somit sollte deine Implementierung eher auf < 0 denn auf <= 0 testen. Das würde auch durch gut geschrieben Tests aufgedeckt werden.
 
Prinzipiell richtig, aber du testest da nicht richtig. Ersetze den Inhalt der Methode durch ein return 0; und dein Test läuft weiter durch...

Zu einem Tests gehören auch asserts die sicher stellen, dass das richtige Ergebnis raus kommt.
Und es gibt eine Funktionalität, die auch noch nicht getestet wurde: bei negativer Eingabe soll eine Exception geworfen werden ...
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben