2013-01-22 12 views
6

के साथ निजी विधि का नकल करने का प्रयास किया गया है, तो मैं मॉकिटो/पावरमॉक के साथ एक निजी विधि का नकल करने की कोशिश कर रहा हूं। मैं NullPointerException
सरल उदाहरण मैं क्या करने की कोशिश कर रहा हूँ:java.lang.NullPointerException प्राप्त करें जब मॉकिटो और पावरमॉक

वास्तविक वर्ग

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"; 
    } 
} 

टेस्ट वर्ग:

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); 

    } 
} 

जब मैं इस मैं चलाने का प्रयास एक NullPointerException: किसी भी सुझाव को हल करने या किसी अन्य तरीके से निजी विधि का मज़ाक उड़ाते हुए कोई सुझाव। मैं विधि को संरक्षित करने के लिए दिए गए सुझाव का उपयोग नहीं करना चाहता जिसका मतलब वास्तविक विधि को बदलना है। मैं वास्तविक

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) 

+1

मैं NullPointerException यह पता लगाने: सिर्फ जासूस विधि के लिए PowerMockito जोड़कर। 'MockitoBusinessOperation = PowerMockito.spy (MockitoBusinessOperation);' अब समस्या निजी विधि का मज़ाक उड़ा रही है हालांकि मैंने निजी विधि का मज़ाक उड़ाया है लेकिन यह अभी भी कॉल कर रहा है। [एक और पोस्ट में] (http://stackoverflow.com/questions/8057607/when-mocking-private-method-with-powermock-but-underlying-method-still-gets-cal?rq=1) किसी ने इसे पोस्ट किया है मुद्दा। लेकिन समाधान मेरे लिए काम नहीं कर रहा है। किसी भी सुझाव के मुताबिक नकली प्रतिबिंबित नहीं होता है जैसा कि लगता है। – jan

+0

क्या आप doWhen() शैली का मज़ाक उड़ा रहे हैं? क्या आप एक नया कोड नमूना पोस्ट कर सकते हैं या अपना प्रश्न संशोधित कर सकते हैं? –

उत्तर

11

में कोई भी परिवर्तन आप PowerMockito.spy() बजाय Mockito.spy() का उपयोग करना चाहिए नहीं चाहता!

कोशिश आयात करने के लिए static org.powermock.api.mockito.PowerMockito.spy;

संबंधित मुद्दे