mockito/powermock ile özel bir yöntemle alay etmeye çalışıyorum. Ben olsun NullPointerException
ben yapmaya çalışıyorum basit bir örnek:mockito ve powermock ile özel bir yöntemle alay etmeye çalışırken java.lang.NullPointerException'ı alın
Gerçek sınıf
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";
}
}
Testi Sınıfı:
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);
}
}
Ben olsun bu çalıştırmayı denediğinizde Bir NullPointerException
: bu veya başka bir yolla özel bir yöntemle ilgilenen herhangi bir öneri. Yöntemi korumalı yapmak için verilen öneriyi kullanmak, yani gerçek yöntemi değiştirmek anlamına gelmez. Ben Sen PowerMockito.spy()
yerine Mockito.spy()
kullanmalıdır gerçek
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)
ithal etmek: gün casusluk yöntemine PowerMockito ekleyerek. 'MockitoBusinessOperation = PowerMockito.spy (MockitoBusinessOperation);' Şimdi özel yöntemle alay etmeme rağmen özel yöntemle alay etmekteydi ama yine de hala çağrı yapıyor. [Başka bir gönderide] (http://stackoverflow.com/questions/8057607/when-mocking-private-method-with-powermock-but-underlying-method-still-gets-cal?rq=1) birisi bunu gönderdi konu. ama çözüm benim için çalışmıyor. herhangi bir öneri, sahte olmanın neden olduğu gibi yansımadığı anlamına gelir. – jan
DoWhen() tarzı alay mı kullanıyorsunuz? Yeni bir kod örneği gönderebilir veya sorunuzu değiştirebilir misiniz? –