Czy jest możliwe zastąpienie metody rodzimej w klasie Java w systemie Android / dalvik?
Jestem jednostką testującą klasęTestMe
przy użyciu EasyMock i jednej z jego metod (powiedzmymethod(N n)
) oczekuje parametru typuN
który ma metodę rodzimą (powiedzmynativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
musi się przywołaćN.nativeMethod()
w pewnym momencie, a problem, który mam, jest taki, że mój obiekt próbny Easymock dla N nie może przesłonić metody rodzimej. Nie mam klasy N, ale mogę refaktoryzowaćTestMe
w jakikolwiek sposób konieczny.
Postanowiłem zrobić własną klasęFakeN extends N
który zastępujenativeMethod
nic nie robić:
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
}
}
ale podczas gdy kompilator nie narzeka, gdy uruchamiam test, wygląda na toN.nativeMethod()
to ta, która jest wywoływana, a nieFakeN
wersja s.
Czy istnieje tutaj obejście, którego mogę użyć?