Samstag, 5. Oktober 2024
Seite wählen

"Local Mock Variables" — Ein dritter eleganter Weg in JMockit?

Das JMockit-Framework [1] bietet mit seinen „Behavior-Based Testing“-Möglichkeiten (Expectations-API) grundsätzlich zwei Wege für Java Types (Interface, Class) einen Mock zu deklarieren. Manchmal wäre ein dritter Weg hilfreich.

JMockit unterstützt die Fähigkeiten 1. + 2. „out of the box“, die 3. Art nicht unmittelbar:

→ 1. Mock-Deklaration als Class Field
→ 2. Mock-Deklaration als Method Parameter
→ 3. Mock-Deklaration als Local Variable ?

Grundsätzlich ist es mit JMockit denkbar einfach und elegant einen Java Type als Mock zu deklarieren:
über Annotation.

Das gilt für die Reference Types:
Interface, "concrete" Class, abstract Class, final Class, enum und auch für Annotations selbst.

Wird einer Deklaration z.B. ein @Mocked (oder @NonStrict, …) vorangestellt, wird zur Laufzeit bei Nutzung des so gekennzeichneten Java Type automatisch ein „Mock“ generiert (static oder „non“ static – beides ist möglich). Eine „Mocked“ Instance ist somit niemals null.

Nachfolgend eine kurze Skizzierung der zwei bekannten Wege und die Beschreibung eines dritten, möglicherweise eleganten weiteren Weges.