Я хочу протестировать метод класса Service
testB1Method2
путем смещения переопределенного метода a1Method2
класса B1
. Я не хочу ничего менять в классе A1
и B1
. Я использую mockito 1.9.0 и powermockito 1.4.12. Следующий код, который я пытаюсь:Mock переопределенный метод с использованием mockito powermokito
UnitTestService класс:
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!");
}
}
Класс обслуживания:
public class Service {
public String serviceMethod() {
B1 b1 = new B1("some data");
return b1.a1Method2();
}
}
класс 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 Класс:
public class B1 extends A1 {
public B1(String data) {
super(data);
}
@Override
public String a1Method1() {
return "a1Method1 from B1 class";
}
}
Я бегу класс UnitTestService
используя testNG в затмении. И здесь вызывается фактический метод в классе B1 a1Method2
, поскольку он печатает в консоли «===== from a1Method2». т.е.: здесь кажется, что mockito не может издеваться над этим методом.
Какое изменение кода должно быть сделано в классе UnitTestService
, чтобы высмеять класс B1 a1Method2
?
Возможный дубликат [Использование PowerMockito.whenNew() не получает издевательства и вызывается оригинальный метод] (http://stackoverflow.com/questions/25317804/using-powermockito-whennew-is-not-getting-mocked- and-original-method-is-called) – Magnilex