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); –