Ich möchte meine Service
Klassenmethode testB1Method2
durch Mock Overridden Methode a1Method2
der Klasse B1
testen. Ich möchte nichts in Klasse A1
und B1
ändern. Ich benutze Mockito 1.9.0 und Powermockito 1.4.12. Der folgende Code Ich versuche:Mock Overridden Methode mit Mockito Powermokito
UnitTestService Klasse:
import static org.mockito.Mockito.*;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.testng.Assert;
import org.testng.annotations.Test;
public class UnitTestService {
@Mock
B1 b1;
@InjectMocks
Service service = new Service();
@Test
public void testB1Method2() throws Exception {
MockitoAnnotations.initMocks(this);
when(b1.a1Method2()).thenReturn("mockvalue");
PowerMockito.whenNew(B1.class).withArguments(Mockito.any()).thenReturn(b1);
String output = service.serviceMethod();
System.out.println("=====" + output);
Assert.assertTrue("mockvalue".equalsIgnoreCase(output), "testA1Method2 failed!");
}
}
Service-Klasse:
public class Service {
public String serviceMethod() {
B1 b1 = new B1("some data");
return b1.a1Method2();
}
}
Klasse A1:
public abstract class A1 {
public A1(String data) {
//doing many thing with data
}
public String a1Method1() {
return "from a1Method1";
}
public String a1Method2() {
return "from a1Method2";
}
}
B1 Klasse:
public class B1 extends A1 {
public B1(String data) {
super(data);
}
@Override
public String a1Method1() {
return "a1Method1 from B1 class";
}
}
Ich benutze Klasse UnitTestService
mit testNG in Eclipse. Und hier wird die aktuelle Methode in der Klasse B1 a1Method2
aufgerufen, da sie "===== from a1Method2" in der Konsole druckt. dh: hier scheint es, dass spöttisch diese Methode nicht verspotten kann.
Welche Codeänderung sollte ich in UnitTestService
Klasse zu Scheinklasse B1 machen a1Method2
?
Mögliches Duplikat von [Mit PowerMockito.whenNew() wird nicht verspottet und die Originalmethode wird aufgerufen] (http://stackoverflow.com/questions/25317804/using-powermockito-whennew-is-not-getting-mocked- und-Original-Methode-ist-aufgerufen) – Magnilex