É possível substituir um método nativo em uma classe Java no Android / Dalvik?
Eu estou testando unidade de uma classeTestMe
usando EasyMock e um de seus métodos (digamosmethod(N n)
) espera um parâmetro do tipoN
que tem um método nativo (digamosnativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
precisa invocarN.nativeMethod()
em algum momento, e o problema que estou tendo é que meu objeto mock do Easymock para N é incapaz de sobrescrever o método nativo. Eu não possuo classe N, mas posso refatorarTestMe
de qualquer maneira necessária.
Eu decidi fazer minha própria aulaFakeN extends N
que substituinativeMethod
fazer 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
}
}
mas enquanto o compilador não reclama, quando eu executo o teste parece queN.nativeMethod()
é o que está sendo invocado e nãoFakeN
s versão.
Existe uma solução aqui que eu possa usar?