Was verwende ich anstelle von Whitebox in Mockito 2.2 um Felder zu setzen?

Wenn mit Mockito 1.9.x ich habe mit Whiteboxum Werte von Feldern zu "injizieren" verspottet. Se Beispiel:

@Before
public void setUp() {

    eventHandler = new ProcessEventHandler();
    securityService = new SecurityServiceMock();
    registrationService = mock(RegistrationService.class);

    Whitebox.setInternalState(eventHandler, "registrationService", registrationService);
    Whitebox.setInternalState(eventHandler, "securityService", securityService);
}

Ich wirklich wie dieser Ansatz, aber jetzt, dass ich versucht, ein upgrade auf Mockito 2.2.7 bemerkte ich (oder vielmehr meine IDE bemerkt und sagte mir schon ein paar mal) , Whitebox-war nicht mehr zu finden in Mockito.

die ich gefunden habe, eine alternative, und kann als ein Ersatz, und das ist org.powermock.reflect.Whitebox, das problem ist, dass ich eine andere Abhängigkeit (Powermock), einfach zu bedienen Whitebox.

Powermock haben auch eine Klasse mit dem Namen Whitebox, aber leider sieht es aus als wenn es nicht genutzt werden kann, mit Mockito 2.2.x

Gibt es gute alternativen in Mockito, dass ich verwenden können, um manuell zu "injizieren" Felder, jetzt, dass Whitebox ist nicht mehr verfügbar?


Lösung

Schrieb ich in einem Kommentar als Antwort auf das posting von @JeffBowman. Kurzum ich entschied mich für den code zu kopieren von WhiteBox, und verwenden Sie diese, da Sie in den meisten Testfällen und die Klasse hat keine Abhängigkeiten zu anderen Klassen. Es war der Schnellste Weg, dieses Problem zu lösen.

Hinweis Die Lösung, @bcody vorschlagen, ist eine bessere alternative, wenn Sie mit Frühling, es anzeigen keine extra-code für Sie zu pflegen. Ich habe die Informationen zu spät 🙁

Tut Mockito @InjectMocks annotation nicht helfen?
Ich weiß nicht, wie Sie funktionieren, 2.2. In 1.x meine Erfahrung ist, dass wenn Sie aus irgendeinem Grund fehlschlagen, um zu injizieren, mockito ist still und ich bekomme eine NullPointerException in der Klasse, wo die Injektion fehlgeschlagen. Bei der Verwendung von whitebox-ich erhalte eine Ausnahme, klar sagt mir, dass es fehlgeschlagen ist. Ich begann, indem ich mit @InjectMocks, dachte aber, dass WhiteBox besser war, so hat sich auch meine co-Arbeiter, so jetzt haben wir eine Menge von Codes, der mit WhiteBox, die upgrade-aufwändig, wenn wir brauchen, um etwas anderes zu tun.
Hier ist ein link zu einem blog-post spricht über die Probleme, die vorhanden ist mit @InjectMocks, es hat die gleichen Empfehlungen wie die akzeptierte Antwort ist: tedvinke.wordpress.com/2014/02/13/...
Ich landete kopieren der Whitebox-code zu, es ist eine sehr einfache Klasse, die rationalisiert, was ich tun musste. Hier der code, falls jemand anders muss es raw.githubusercontent.com/mockito/mockito/...

InformationsquelleAutor emanciperingsivraren | 2016-10-27

Schreibe einen Kommentar