assertj / assertj/doc

Add custom exception assertions

Offen
#175 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
CSS
Sterne
26
Forks
32
Ø Merge
2 T. 9 Std.
Gemergte PRs (30 T.)
3

Beschreibung

Currently, the documentation shows how to extend an assertion in [2.6.2 Custom Assertions](https://assertj.github.io/doc/#assertj-core-custom-assertions) but there is no documentation for custom exception asserts, which seems to use a slightly different mechanism with some other class hierarchy.

It would be nice to include this in the guide and in the [examples repository](https://github.com/assertj/assertj-examples)

The goal for this section in the guide will be to present, given a custom exception, a way to assert on the specific fields in that class. For instance, given a custom exception:
```
package com.example.exception;

public class DetailException extends RuntimeException {

private String detail;

public DetailException(String message, String detail) {
super(message);
this.detail = detail;
}

public String getDetail() {
return detail;
}
}
```

and a business logic throwing this exception
```
package com.example.thrower;

import com.example.exception.DetailException;

public class DetailExceptionThrower {

public void throwException() {
throw new DetailException("message", "a detailed exception explanation");
}
}
```

write an extension to write a test like:
```
package com.example.thrower;

import org.junit.jupiter.api.Test;

import static org.assertj.extension.DetailExceptionAssertions.assertThatDetailException;

class DetailExceptionThrowerCustomAssertionTest {

private final DetailExceptionThrower underTest = new DetailExceptionThrower();

@Test
void test_customAssertion() {
assertThatDetailException()
.isThrownBy(underTest::throwException)
.withMessage("message")
.withDetail("a detailed exception explanation");
}
}
```

is it even possible to write an extension like this?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit dem bestehenden Abschnitt „2.6.2 Custom Assertions“ im verlinkten AssertJ-Leitfaden und prüfe das verlinkte assertj-examples-Repository auf seine aktuellen Assertion-Beispiele. Bestätige, wie benutzerdefinierte Exception-Assertions in die bestehende Klassenhierarchie passen, und dokumentiere an beiden Stellen ein Beispiel, das die Exception-Nachricht und Detailfelder abdeckt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
documentation
Issue-Typ
Dokumentation
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.