当前位置:   article > 正文

java mock私有方法_尝试使用mockito和powermock模拟私有方法时获取java.lang.NullPointerException...

java.lang.nullpointerexception at org.powermock.api.mockito.internal.expect

我试图用mockito / powermock模拟一个私有方法.我得到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

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)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号