Wie initialisiert man bei Whitebox die dependency injection

Wiplash4

Aktives Mitglied
Ich binde folgende Packages ein.
XML:
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-core</artifactId>
  <version>${powermock_version}</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-reflect</artifactId>
  <version>${powermock_version}</version>
  <scope>test</scope>
</dependency>

Der Sinn ist, dass ich in Unittests private Methoden testen kann. Allerdings bemerkte ich, dass bei
Whitebox.invokeMethod(processor, "privateMethod");
die injected dependencies 'null' sind. Wenn ich aber von processor eine public methode aufrufe, sind diese dependencies aber vorhanden. Das sagt mir, dass ich bei Whitebox etwas initialisieren muss. Wie mache ich das?

processor wurde in den Unittest im Uebrigen injected.
 

KonradN

Super-Moderator
Mitarbeiter
Ich kann Dir gerade nicht ganz folgen. Whitebox.invokeMethod(Object, String, Object...) ruft lediglich die Methode, die als zweiten Parameter angegeben wurde, auf. Das hat also absolut nichts mit der Initialisierung des übergebenen Objektes zu tun.

Wenn in dem übergebenen Objekt etwas nicht per DI eingefügt wurde, dann ist das ein Problem bei der Objekterstellung. Der übliche Fehler ist halt, wenn das Objekt nicht durch DI Mechanismen erstellt wurde sondern manuell.

Daher würde ich einmal im Detail schauen, wie das in dem Test, wo es Probleme gibt, erzeugt wurde.

Denn das, was Whitebox macht sind einfache zwei Schritte:
1. die Methode, die aufgerufen werden soll, suchen
2. die gefundene Methode aufrufen.
Da wird also definitv sonst nichts an der Instanz, die übergeben wird, gemacht.
 

Neue Themen


Oben