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?
InformationsquelleAutor jan | 2013-01-22
Schreibe einen Kommentar