У меня есть абстрактный метод checkStatus()
, который имеет реализации в классе Checker.java. Но когда я выполняю тестовый пример Junit по методу абстрактного класса validate()
, который в свою очередь вызывает checkStatus()
, сбой из-за отсутствия пружинной зависимости в классе Checker.java.Неисправные тестовые примеры Junit для абстрактного метода
Информация представлена ниже.
Абстрактный класс: класс
public abstract class MyAbstractClass
{
protected abstract boolean checkStatus();
public boolean validate()
{
//Some code
return checkStatus();
}
}
Реализация: тест
public class Checker extends MyAbstractClass
{
@Autowired
private StatusHelper helper;
public void setHelper(StatusHelper helper){
this.helper = helper;
}
@Override
public boolean checkStatus() throws Exception{
if(null == helper){
throw new Exception("Helper is null");
}
return helper.validateStatus();
}
}
JUnit:
class AbstractClassTest
{
MyAbstractClass absClass = Mockito.mock(Checker.class, Mockito.CALLS_REAL_METHODS);
@Test
public void testStatusOfChecker()throws Exception {
boolean status = absClass.validate();
assertEquals(status, true);
}
}
Я считаю, что я могу привнести вспомогательный объект вручную, как в следующем
Checker check = mock(Checker.class);
StatusHelper helper = mock(StatusHelper.class);
check.setHelper(helper);
, но проблема здесь в том, что я не могу напрямую вводить объект absClass
, так как setHelper()
не наследуется.
Я могу вместо этого написать тестовый пример непосредственно в подкласс, но мне нужен был этот способ, чтобы проверить некоторые другие функции в методе абстрактного класса validate()
.
Может кто-нибудь помочь мне, как установить вспомогательный объект в подкласс или есть ли другой способ сделать это в Junit? Любая помощь или ссылки, содержащие релевантную информацию, очень заметны. Спасибо,