У меня есть abstract
класс, который я хотел бы, чтобы дразнить из для тестирования:createMock и не абстрактные методы в абстрактном классе
public abstract class Foo {
public abstract void bar();
public void baz() {
System.out.print("Hi from baz!");
}
}
Если я использую EasyMock Foo mock = createNiceMock(Foo.class)
, а затем вызвать mock.baz()
я получаю java.lang.NullPointerException
, Если я изменю baz()
на final
, все будет работать плавно (я предполагаю, что это связано с тем, что EasyMock не может издеваться над методами final
), но я хотел был бы иметь возможность позвонить baz()
, не делая этого.
Есть ли способ создать макет объекта с помощью EasyMock, который позволяет мне называть мои методы не abstract
?
Один обходной путь настоящее время я использую это:
Foo mock = new Foo() {
@Override
public void bar() {
return;
}
}
но это супер некрасиво.
Что касается вашего обходного пути, вы можете просто установить поле ... Поле поля = Foo.class.getDeclaredField (fieldName); \t \t field.setAccessible (true); \t \t field.set (setFieldOn, value); –