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.