1
我有一个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;
}
}
但这是超级难看。
关于您的解决方法,您可以只设置字段... Field field = Foo.class.getDeclaredField(fieldName); \t \t field.setAccessible(true); \t \t field.set(setFieldOn,value); –