¿Es posible anular un método nativo en una clase Java en Android / dalvik?
Estoy haciendo una prueba de unidad de una claseTestMe
usando EasyMock, y uno de sus métodos (por ejemplo,method(N n)
) espera un parámetro de tipoN
el cual tiene un método nativonativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
necesita invocarN.nativeMethod()
en algún momento, y el problema que tengo es que mi objeto Easymock simulado para N no puede anular el método nativo. No tengo clase N pero puedo refactorizarTestMe
En cualquier forma necesaria.
Decidí hacer mi propia claseFakeN extends N
que anulanativeMethod
hacer nada:
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
}
}
pero mientras el compilador no se queja, cuando ejecuto la prueba parece queN.nativeMethod()
es el que está siendo invocado y noFakeN
s versión
¿Hay alguna solución aquí que pueda usar?