Java.lang.NullPointerException wenn versucht mock private Methode mit mockito und powermock
Ich versuche zu verspotten, eine private Methode mit mockito/powermock. Ich bekomme NullpointerException
Das einfache Beispiel, das ich versuche zu tun ist:
Tatsächliche Klasse
import com.siriusforce.plugin.common.PluginSystem;
import com.wellsfargo.core.business.service.dp.fulfillment.MockitoBusinessService;
public class MockitoBusinessOperationImpl implements MockitoBusinessOperation{
private MockitoBusinessService mockitoBusinessService = PluginSystem.INSTANCE.getPluginInjector().getInstance(MockitoBusinessService.class);
private Long Id;
public String creditAproved( Long Id){
System.out.println("Came Inside MockitoBusinessOperationImpl");
this.Id = Id;
if (this.Id != null){
System.out.println("Inside creditaproved If statement");
String Report = mockitoBusinessService.creditReport(this.Id);
System.out.println("Mock Object Injected from test class "+ Report);
return Report;
} else
return "Went to Else Part";
}
private String inTestMethod(Long Id){
return "this is working";
}
}
Test Klasse:
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.doReturn;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.siriusforce.plugin.common.PluginSystem;
public class MockitoBusinessServiceTest {
@Mock
MockitoBusinessService MockitoBusinessService ;
@InjectMocks
private MockitoBusinessOperation MockitoBusinessOperation = PluginSystem.INSTANCE.getPluginInjector().getInstance(MockitoBusinessOperation.class);
private Long Id;
@BeforeMethod
public void init() {
MockitoAnnotations.initMocks(this);
this.Id = 123L;
}
@PrepareForTest(MockitoBusinessOperation.class)
@Test(enabled = true)
public void testReCalculatePrepaids() throws Exception {
MockitoBusinessOperation = spy(MockitoBusinessOperation);
doReturn("this will work hopefully").when(MockitoBusinessOperation, "inTestMethod", this.Id);
when(MockitoBusinessService.creditReport(this.Id)).thenReturn(new String("Decline by only Me"));
String mainReport = MockitoBusinessOperation.creditAproved(this.Id);
System.out.println("Indirect Call from actual class MainReport " + mainReport);
}
}
Wenn ich versuche zu laufen, das ich eine NullPointerException
: jeder Vorschlag, der Lösung dieser oder einer anderen Weise spöttisch eine private Methode. Ich möchte nicht den Vorschlag gegeben, für die Methode geschützt, was bedeutet, dass die tatsächliche Methode. Ich will keine änderungen an der eigentlichen
class method
<failure type="java.lang.NullPointerException">java.lang.NullPointerException
at org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.addAnswersForStubbing(PowerMockitoStubberImpl.java:68)
at org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.prepareForStubbing(PowerMockitoStubberImpl.java:123)
at org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.when(PowerMockitoStubberImpl.java:91)
at com.wellsfargo.core.business.service.dp.fulfillment.MockitoBusinessServiceTest.testReCalculatePrepaids(MockitoBusinessServiceTest.java:54)
- Ich herauszufinden, der NullPointerException: indem Sie nur PowerMockito der spy-Methode. 'MockitoBusinessOperation = PowerMockito.spy(MockitoBusinessOperation);' das problem ist Jetzt mit Spott von der privaten Methode obwohl ich verspottet die private Methode, aber Sie noch immer rufen. In einem anderen Beitrag jemand gepostet hat, dieses Problem. aber die Lösung ist nicht für mich arbeiten. jeder Vorschlag, warum ist das mock nicht reflektiert, wie es angenommen zu werden.
- Sie sind mit dem doWhen() style-Spott? Können Sie ein neues code-Beispiel oder ändern Sie Ihre Frage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
PowerMockito.spy()
stattMockito.spy()
!Versuchen zu importieren
static org.powermock.api.mockito.PowerMockito.spy;