So überprüfen Sie, ob eine Ausnahme in einem Junit-Test-Worker-Thread ausgelöst wirdJava

Java-Forum
Anonymous
 So überprüfen Sie, ob eine Ausnahme in einem Junit-Test-Worker-Thread ausgelöst wird

Post by Anonymous »

Ich habe versucht, mit einem JavaFX ChangeListener eine Ausnahme auszulösen, wenn eine JavaFX-Eigenschaft durch eine Bindung auf einen ungültigen Wert gesetzt wird. Das ist vielleicht nicht der richtige Weg, um mein Ziel zu erreichen, aber jetzt bin ich neugierig: Ich konnte dieses Verhalten mit Junit5 nicht testen. Unten finden Sie ein minimales Arbeitsbeispiel meines Versuchs.
class PropertyValueLimiterTest {

@Test
void bind_invalidValue_MWE(){
Set allowedValues = Set.of("foo", "bar");
Property property = new SimpleObjectProperty("foo");
ChangeListener listener = (observable, oldValue, newValue) -> {
if(! allowedValues.contains(newValue)){
throw new IllegalArgumentException();
}
};
property.addListener(listener);
Assertions.assertThrows(IllegalArgumentException.class,
() -> property.setValue("invalid"));
}
}

Wenn ich diesen Code ausführe, passieren zwei Dinge:
  • Der Test schlägt fehl, weil die erwartete Ausnahme nicht ausgelöst wird;
  • Junit5 teilt mir mit, dass eine Ausnahme ausgelöst wurde, die der von mir erwarteten entspricht: Exception in thread „Test worker“ java.lang.IllegalArgumentException.
Wie kann ich Junit mitteilen, dass die Ausnahme vorliegt? Ich suche nach etwas, das möglicherweise in einem Hintergrundthread angesprochen wird, der mit dem Test verknüpft ist, und nicht mit dem Hauptthread?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post