Testen von Klassen mit eingebetteten new() Aufrufen mit Mockito
Betrachten Sie eine Legacy-Klasse (TestedClass), das ein LoginContext-Objekt mithilfe eines direkten new()-Aufrufs instanziiert:
<code class="java">public class TestedClass { public LoginContext login(String user, String password) { LoginContext lc = new LoginContext("login", callbackHandler); } }</code>
Das Testen dieser Klasse kann schwierig sein, wenn der LoginContext Die Instanziierung erfordert bestimmte JAAS-Sicherheitskonfigurationen. Um dieses Problem anzugehen, untersuchen wir die Verwendung von Mockito, um die Klasse LoginContext zu verspotten, ohne den ursprünglichen Quellcode zu ändern.
Verwendung von Mockito Spies
Mockito bietet einen praktischen Mechanismus namens Spione, der es uns ermöglicht, Spione realer Objekte zu erstellen, die die folgenden Methoden ausführen:
Um unsere Klasse mit Spionen zu testen, können wir den folgenden Code einführen:
<code class="java">TestedClass tc = spy(new TestedClass()); LoginContext lcMock = mock(LoginContext.class); when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
Dieser Code erstellt ein Spion der TestedClass-Instanz (tc) und verspottet die LoginContext-Klasse über lcMock. Die when()-Anweisung stoppt die login()-Methode, um den simulierten LoginContext zurückzugeben.
Der Einsatz von Spionen ermöglicht es uns, die ursprüngliche Klasse zu testen ohne den Aufrufmechanismus new() zu ändern, was einen flexiblen und effektiven Testansatz bietet.
Das obige ist der detaillierte Inhalt vonWie teste ich Klassen mit eingebetteten „new()'-Aufrufen mit Mockito Spies?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!