Можно ли переопределить нативный метод в классе Java в Android / dalvik?
Я юнит тестирую классTestMe
используя EasyMock, и один из его методов (скажем,method(N n)
) ожидает параметр типаN
который имеет нативный метод (скажем,nativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
должен вызватьN.nativeMethod()
в какой-то момент, и проблема, с которой я сталкиваюсь, заключается в том, что мой фиктивный объект Easymock для N не может переопределить собственный метод. Я не владею классом N, но могу рефакторингTestMe
в любом случае необходимо.
Я решил сделать свой собственный классFakeN extends N
который переопределяетnativeMethod
ничего не делать:
class FakeN extends N {
FakeN(int pointer) {
super(pointer);
}
@Override
public void nativeMethod(Object o) {
// super.nativeMethod() is an actual native method defined as:
// public native void nativeMethod(Object o)
//
// IGNORE
}
}
но в то время как компилятор не жалуется, когда я запускаю тест, кажется, чтоN.nativeMethod()
тот, который вызывается, а неFakeN
версия с.
Есть ли обходной путь, который я могу использовать?