Testen erwarteter Exceptions in JUnit

Wir können erwartete Exceptions mit der JUnit 5 assertThrows Behauptung testen. Diese JUnit-Behauptungsmethode gibt die geworfene Exception zurück, so dass wir sie auch verwenden können, um die Exception-Nachricht zu überprüfen.

JUnit Assert Exception

Hier ist ein einfaches Beispiel, das zeigt, wie man eine Exception in JUnit 5 behauptet.

String str = null;
assertThrows(NullPointerException.class, () -> str.length());

JUnit 5 Assert Exception Nachricht

Nehmen wir an, wir haben eine Klasse definiert als:

class Foo {
    void foo() throws Exception {
        throw new Exception("Exception Message");
    }
}

Lassen Sie uns sehen, wie wir die Exception sowie ihre Nachricht testen können.

Foo foo = new Foo();
Exception exception = assertThrows(Exception.class, () -> foo.foo());
assertEquals("Exception Message", exception.getMessage());

JUnit 4 Erwartete Exception

Wir können das erwartete Attribut der JUnit 4 @Test Annotation verwenden, um die erwartete Exception zu definieren, die von der Testmethode geworfen wird.

@Test(expected = Exception.class)
public void test() throws Exception {
    Foo foo = new Foo();
    foo.foo();
}

JUnit 4 Assert Exception Nachricht

Wenn wir die Exception-Nachricht testen wollen, müssen wir die ExpectedException-Regel verwenden. Unten ist ein komplettes Beispiel, das zeigt, wie man eine Exception sowie die Exception-Nachricht testet.

package com.journaldev.junit4;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class JUnit4TestException {

    @Rule
    public ExpectedException thrown = ExpectedException.none();

    @Test
    public void test1() throws Exception {
        Foo foo = new Foo();
        thrown.expect(Exception.class);
        thrown.expectMessage("Exception Message");
        foo.foo();
    }
}

Das ist alles für einen schnellen Überblick über das Testen erwarteter Exceptions in JUnit 5 und JUnit 4.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: