JUnit testen auf SomeException

uppss

Aktives Mitglied
Hallo Community,

wie kann ich nun diese Methode testen? Vielen Dank

Ich brauche etwas Unterstützung, um diese Methode zu vervollständigen:

Java:
public Person findPerson(String name) throws SomeException {
    return person wenn vorhanden, sonst SomeException;
}

Code:
und Person() zum Bespiel:

public class Person {
    private String name;
    private String irgendwas;
}
 

KonradN

Super-Moderator
Mitarbeiter
Evtl. fehlt dir noch etwas das generelle Verständnis von Unit Tests. Generell hast Du immer den gleichen Aufbau:
1. Prepare Test - Hier wird dann vorbereitet, was getestet werden soll.
2. Action - hier kommt der Aufruf, der getestet werden soll.
3. Test - das Ergebnis wird getestet.

Das testen, dass eine Exception geworfen wird, kann man mit assertThrows testen:

Bei deinem konkreten Fall haben wir aber schlicht keine Methode zum Testen. Du hast ja keine Details der Methode sondern nur den Methodenkopf mit nicht übersetzbarem Inhalt.

Die gesuchte Person muss ja irgendwo her kommen. Machen wir einfach ein kleines Beispiel:

Erst einmal bauen wir uns ein kleines PersonRepository. Ich habe mal eine minimale innere Klasse Person eingebaut, die natürlich separat wäre.
Und das Repository sucht die Person nur aus einer List.

Java:
import java.util.List;
import java.util.Objects;

public class PersonRepository {
    public static class Person {
        public String name;
    }

    private List<Person> persons;

    public PersonRepository(final List<Person> persons) {
        this.persons = persons;
    }

    public Person findPerson(final String name) throws Exception {
        return persons.stream()
                .filter(p -> Objects.equals(p.name, name))
                .findFirst().orElseThrow(() -> new Exception("Person not found!"));
    }
}

Jetzt kann man das Testen. Der Vorteil hier ist, dass man einfach im Konstruktor eine List übergeben kann als Initialisierung. Wenn dies aus einer anderen Quelle käme, dann würde man das entsprechend einbauen und dann im Test vermutlich mit Mocking arbeiten.

Damit kann ein Test relativ einfach aussehen:
Java:
import org.junit.jupiter.api.Test;

import java.util.List;

import static org.junit.jupiter.api.Assertions.assertThrows;

public class PersonRepositoryTests {
    @Test
    public void testPersonNotfound() {

        // Vorbereitung: Repository, das keine Personen enthält.
        PersonRepository repository = new PersonRepository(List.of());

        // Durchführung & Test - bei Exceptions nicht trennbar.
        assertThrows(Exception.class, () -> repository.findPerson("nobody"));
    }
}
 

uppss

Aktives Mitglied
Hallo Konrad und vielen Dank für die tolle Erklärung. Es wäre noch besser, wenn du mir ein paar Infos für die Ropository noch gibst. Ich meine die Theorie, wann man die braucht usw.
 

KonradN

Super-Moderator
Mitarbeiter
Das ist doch einfach die Klasse, in der die findPerson Methode ist. Eine Klasse Methode kann in Java ja nicht einfach so existieren - sie braucht eine Klasse um sich. Und die Methode findPerson braucht etwas, worin nach der Person gesucht werden soll.

Edit: Schreibfehler behoben, danke @Jw456
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
G Testen mit JUnit Java Basics - Anfänger-Themen 4
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
T Junit --Exception testen Java Basics - Anfänger-Themen 15
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23
xehpuk In JUnit über eigenen Thread testen Java Basics - Anfänger-Themen 3
B OOP Testen - JUnit Java Basics - Anfänger-Themen 30
G Methoden mit Junit testen? Java Basics - Anfänger-Themen 2
A mit Junit testen Java Basics - Anfänger-Themen 7
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
6 Best Practice Feedback zu Service / JUnit Tests Java Basics - Anfänger-Themen 3
M Anfängerfehler - Tests JUnit IntelliJ Java Basics - Anfänger-Themen 24
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
W JUnit Tests Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
L JUnit tests in java Java Basics - Anfänger-Themen 5
F JUnit - Was ist mit "side effects" gemeint ? Java Basics - Anfänger-Themen 2
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
L Junit Testing bei XML? Java Basics - Anfänger-Themen 3
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
A Objekt in Methode zurückgeben, JUnit zeigt Error Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
O JUnit - Objektreferenzen Java Basics - Anfänger-Themen 3
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
C JUnit Tests. How to Java Basics - Anfänger-Themen 5
S Junit Test Java Basics - Anfänger-Themen 2
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
L Junit Tests Java Basics - Anfänger-Themen 10
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
V JUnit Klassen Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
M JUnit Testmethoden mit mehreren assert Methoden Java Basics - Anfänger-Themen 1
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
Z JUnit Exception Java Basics - Anfänger-Themen 2
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
G JUnit-Tests im Programmdurchlauf starten Java Basics - Anfänger-Themen 4
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
T JUnit test failed Java Basics - Anfänger-Themen 3
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
T Junit in Eclipse Java Basics - Anfänger-Themen 1
P JUnit bedeutungen Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
V Frage zu JUnit Tests Java Basics - Anfänger-Themen 3
B JUnit für JFileChooser Java Basics - Anfänger-Themen 6
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
S File vergleich - Junit Java Basics - Anfänger-Themen 6
T JUnit Java Basics - Anfänger-Themen 18
G Junit Java Basics - Anfänger-Themen 4
X JUnit testing Java Basics - Anfänger-Themen 7
T JUnit Suite frage Java Basics - Anfänger-Themen 6
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
S InvocationTargetException bei JUnit Testlauf Java Basics - Anfänger-Themen 2
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
A JUnit Tests in Jar-Archiv packen Java Basics - Anfänger-Themen 2
G Erste Schritte JUNIT Regressionstests automatisieren Java Basics - Anfänger-Themen 2
M JUnit - nur Failures loggen? Java Basics - Anfänger-Themen 2
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
R String Replace für JUnit Java Basics - Anfänger-Themen 19
T JUNIT Nullpointerexception Java Basics - Anfänger-Themen 3
M JUNIT tests mit ant script ausführen Java Basics - Anfänger-Themen 4
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
S [JUnit] Print Results while running Java Basics - Anfänger-Themen 6
T Junit Tests Java Basics - Anfänger-Themen 7
I JUnit Datapoints für mehrere Testklassen Java Basics - Anfänger-Themen 4
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
M Junit tests gehen nicht Java Basics - Anfänger-Themen 2
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben