Мы пишем тесты JUnit для класса, который использует Spring autowiring для инъекции зависимости, которая является некоторым экземпляром интерфейса. Поскольку тестируемый класс никогда явно не задает зависимость или не передал ее в конструкторе, похоже, что JMockit не считает необходимым также создавать его.
До сих пор мы использовали SpringRunner для загрузки Spring нагрузок для нас, что работает. Две вещи, которые нам не нравятся в этом: 1) инфраструктура Spring должна быть загружена и инициализирована каждый раз при запуске тестов, которые не совсем быстрые, и 2) мы вынуждены явно создавать все макетные зависимости как реальные классы, то, что помогает JMockit.
Здесь приведен упрощенный пример того, что мы тестируем:
public class UnitUnderTest {
@Autowired
ISomeInterface someInterface;
public void callInterfaceMethod() {
System.out.println( "UnitUnderTest.callInterfaceMethod calling someInterface.doSomething");
someInterface.doSomething();
}
}
Итак, вопрос в том, есть ли способ заставить JMockit создать mock someInterface
?