Я использую JMockit для тестирования класса, который автоматически подключается (пружина). Из этого сообщения я понял, что мне придется вручную вводить фиктивный экземпляр класса ClassToBeTested. Даже если я сделаю это, я наткнусь на NullPointerEx
в строке Deencapsulation.setField(classUnderTest, mockSomeInterface);
, поскольку и classUnderTest, и mockSomeInterface равны null
. Однако, если я использую @Autowire
на mockSomeInterface
, он автоматически подключается правильно.
Класс для тестирования:
@Service
public class ClassToBeTested implements IClassToBeTested {
@Autowired
ISomeInterface someInterface;
public void callInterfaceMethod() {
System.out.println( "calling interface method");
String obj = someInterface.doSomething();
}
}
Прецедент:
public class ClassToBeTestedTest {
@Tested IClassToBeTested classUnderTest;
@Mocked ISomeInterface mockSomeInterface;
public void testCallInterfaceMethod(){
Deencapsulation.setField(classUnderTest, mockSomeInterface);
new Expectations() { {
mockSomeInterface.doSomething(anyString,anyString); result="mock data";
}};
// other logic goes here
}
}