Ich möchte einen Fehlerfall testen, der durch die nicht-öffentliche Ausnahme einer Bibliothek ausgelöst wird. Wie kann ich diese Ausnahme auslösen? - Java, Ausnahme, Testen, Reflexion, Mockito

Das Tinkerschmiede Bibliothekswürfe TimeoutException und NotConnectedException (unter anderen). Ich möchte diese in meinen Testfall werfen, damit ich testen kann, ob mein Fehlerbehandlungscode korrekt funktioniert.

Wenn ich es versuche

when(brickletLEDStripMock.getRGBValues(any(), any())).thenThrow(new NotConnectedException("Test"));

IntelliJ sagt mir, dass die Ausnahme nicht öffentlich ist und nicht von außerhalb des Pakets zugegriffen werden kann.

Gibt es eine Möglichkeit, es trotzdem zu werfen, vielleicht mit Powermock?

BEARBEITEN:

Dank an Fran Montero Ich habe jetzt diesen Arbeitscode:

Constructor<NotConnectedException> constructor;
constructor = NotConnectedException.class.getDeclaredConstructor();
constructor.setAccessible(true);
NotConnectedException exception = constructor.newInstance();

when(brickletLEDStripMock.getRGBValues(anyInt(), anyShort())).thenThrow(exception);

Antworten:

2 für die Antwort № 1

Sie können auf diese Klasse mit reflection api zugreifen:

Constructor<Foo> constructor;
constructor = Foo.class.getDeclaredConstructor(Object.class);
constructor.setAccessible(true);
Foo<String> foo = constructor.newInstance("arg1");

Prüfen Java: Zugriff auf privaten Konstruktor mit Typparametern


Speisekarte