Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Gibt es gemeinsame Fallstricke bei Verspottung von Ausnahmen mit Mockito


Gibt es gemeinsame Fallstricke bei Verspottung von Ausnahmen mit Mockito


Bei der Verwendung von Mockito -to -Mock -Ausnahmen können Ihre Tests Ihre Tests weniger effektiv oder schwieriger zu bewahren. Hier sind einige dieser Fallstricke und wie man sie vermeidet:

1. Übergesprochener **

Eine der bedeutendsten Fallstricke ist übermächtig. Dies geschieht, wenn Sie zu viele Abhängigkeiten verspotten, was zu Tests führt, die zerbrechlich und schwer zu warten sind. Über-Mocking kann dazu führen, dass sich Tests mehr auf die Mocke konzentrieren als auf das tatsächliche Verhalten des zu testenden Systems. Um dies zu vermeiden, konzentrieren Sie sich darauf, nur die Mitarbeiter zu verspotten, die nicht trivielles Verhalten haben oder deren Interaktionen Sie überprüfen möchten. Verwenden Sie Realinstanzen für einfache Kooperationen [3].

2. Ungültige Ausnahmen **

Mockito stellt sicher, dass die Ausnahme für die spezifische Stubbed -Methode gültig ist. Wenn Sie versuchen, eine Ausnahme zu machen, die nicht in der Liste der geprüften Ausnahmen der Methode liegt, beschwert sich Mockito. Wenn beispielsweise eine Methode "ioException" nicht deklariert wird, wird versucht, sie zu verspotten, um eine "ioException" zu werfen, zu einem Fehler [1]. Stellen Sie immer sicher, dass die verspottete Ausnahme für die Methode gültig ist.

3.. Verwenden Sie `thenthrow ()` mit void -Methoden **

`wenn (). thenthrow ()` kann nicht mit Hohlraummethoden verwendet werden, da es keinen Rückgabewert gibt, um sich zu verspotten. Verwenden Sie stattdessen "dothrow ()" für void -Methoden. Wenn Sie diese Methoden falsch mischen, kann dies zu Fehlern führen [2].

4. Mangel an Spezifität **

Bei Verspottung von Ausnahmen ist es wichtig, spezifisch darüber zu sein, welche Ausnahmen Sie testen. Vermeiden Sie eine Übermaschnahme, indem Sie sich auf Ausnahmen konzentrieren, die für das Testszenario relevant sind. Dies hilft, die Tests fokussierbar und wartbar zu halten [2] [8].

5. Falsches Umgang mit Ausführungen **

Stellen Sie sicher, dass der Anwendungscode darauf vorbereitet ist, Ausnahmen korrekt zu verarbeiten, auch wenn er während der Tests verspottet wird. Dies beinhaltet das Testen der Logik für den Umgang mit Ausnahmen, um sicherzustellen, dass sie sich wie erwartet verhält [2].

6. Verwendung sinnvoller Fehlermeldungen **

Fügen Sie bei Verspottung von Ausnahmen aussagekräftige Nachrichten hinzu, um Probleme zu diagnostizieren, wenn Tests fehlschlagen. Diese Praxis verbessert die Klarheit und Wirksamkeit Ihrer Tests [2].

7. Testen der Ausnahmehandhabung **

Stellen Sie sicher, dass der Code wie erwartet Ausnahmen behandelt. Dies beinhaltet die Überprüfung, ob sich die Anwendung korrekt verhält, wenn Ausnahmen geworfen werden, was für den Aufbau von widerstandsfähigen Anwendungen entscheidend ist [2].

8. Messungen zurücksetzen und klären **

Mockito bietet Funktionen wie "Reset () und" ClearInvocations () "für die Verwaltung von Mocks. Diese sollten jedoch sparsam verwendet werden. Das Zurücksetzen eines Scheins sollte nur in seltenen Fällen erfolgen, z. B. wenn ein Schein von einem Behälter injiziert wird und nicht für jeden Test nachgebildet werden kann. Das Löschen von Aufrufe kann nützlich sein, wenn das Nachdenken eines Scheins zu einem signifikanten Overhead führen würde [1].

Indem Sie sich dieser Fallstricks bewusst sind und bewährte Verfahren folgen, können Sie Mockito effektiv verwenden, um Ausnahmen zu verspotten und sicherzustellen, dass Ihre Tests robust und wartbar sind.

Zitate:
[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-wrow-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument-whos-has-to-be-a-Method-call-on-On
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-do-not-wow-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-null--and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-eceptions-from-mocks-with-mockito