Как пропустить вызов супер-метода из абстрактного класса в тесте junit? - PullRequest
0 голосов
/ 06 апреля 2019

Что является лучшим способом написания модульного теста для такого случая

public abstract class Parent {

     public void initialize() {
        //some logic
     }
}
public class Child extends Parent {
    public void initialize(){
        super.initialize()
        //some logic
    }
}

@Test
public void testInitialize() {
    Child child = new Child();

    // Prevent/stub logic in super.method()
    Mockito.doNothing().when(child)./*super method called*/

    verify(...)

}

Проблема в насмешке над супер-методом из родительского абстрактного класса, мне нужно предотвратить его выполнение.

Я нашел подход для неабстрактного родительского класса, но он не работает в моем случае:

   Child spy = Mockito.spy(new Child());

    // Prevent/stub logic in super.method()
    Mockito.doNothing().when((Parent)spy).initialize();

1 Ответ

1 голос
/ 07 апреля 2019

Тот факт, что Child extends Parent - это деталь реализации Child, и ваш тест не должен беспокоиться об этом. Обычно это сигнал о том, что вам нужно реструктурировать базовый класс, например, путем введения зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...