Мне нужно издеваться над защищенным методом в родительском классе моего класса, но родительский класс находится в другом пакете. Я думал, что решение будет состоять в использовании PowerMockito.spy()
, но я не могу создать экземпляр типа Child, потому что он абстрактный. Должно быть решение этой проблемы без рефакторинга.Mock Protected Parent Method Когда родитель находится в другом пакете, а дочерний класс - абстрактно
Зависимости.
<dependency org="org.powermock" name="powermock-core" rev="1.6.4"/>
<dependency org="org.powermock" name="powermock-module-junit4" rev="1.6.4"/>
<dependency org="org.powermock" name="powermock-api-mockito" rev="1.6.4"/>
Это устаревший код, поэтому я не могу реорганизовать, но вот упрощенный код.
Parent.java
package parent;
public class Parent {
// Want to mock this protected parent method from different package
protected String foo() {
String someValue = null;
// Logic setting someValue
return someValue;
}
}
Child.java
package child;
import parent.Parent;
public abstract class Child extends Parent {
String fooString = null;
public String boo() {
this.fooString = this.foo();
String booString = null;
// Logic setting booString
return booString;
}
}
Каждый раз, когда некоторые DEV пишет 'String xxx = null', умирает котенок. Что касается вопроса, я читал его 3 раза, и мне очень жаль, но я не понимаю, о чем вы спрашиваете. Вы спрашиваете, как создать экземпляр абстрактного класса? –
haha Я просто бросил вместе быстрый пример. Это похоже на этот [вопрос] (http://stackoverflow.com/questions/34684328/mock-protected-parent-method-when-the-parent-is-in-a-different-package?rq=1), но Я не могу использовать 'PowerMockito.spy()' здесь, потому что тестируемый класс является абстрактным. – javaPlease42
Итак, я хочу издеваться над методом 'Parent.boo()', а мой класс - 'Child'. Поэтому мне нужно использовать 'Mockito.spy (Child.class)' вместо 'PowerMockito.spy (new Child())', потому что Child является абстрактным. – javaPlease42