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 nieFakeNwersja s.

Czy istnieje tutaj obejście, którego mogę użyć?

questionAnswers(1)

yourAnswerToTheQuestion