Kann eine native Methode in einer Java-Klasse in Android / dalvik überschrieben werden?

8

Ich teste eine Klasse TestMe mit EasyMock und eine ihrer Methoden (zB method(N n) ) erwartet einen Parameter vom Typ N , der eine native Methode hat (zB nativeMethod() ).

%Vor%

method() muss irgendwann N.nativeMethod() aufrufen, und das Problem, das ich habe, ist, dass mein Easymock Mock-Objekt für N die native Methode nicht überschreiben kann. Ich besitze keine Klasse N, aber ich kann TestMe in irgendeiner Weise umgestalten.

Ich habe beschlossen, meine eigene Klasse FakeN extends N zu erstellen, die nativeMethod außer Kraft setzt, um nichts zu tun:

%Vor%

Aber während der Compiler nicht meckert, erscheint beim Ausführen des Tests N.nativeMethod() als derjenige, der aufgerufen wird, und nicht FakeN s Version.

Gibt es hier einen Workaround, den ich verwenden kann?

    
scorpiodawg 07.06.2012, 22:02
quelle

1 Antwort

5

Die Methoden native können wie alle anderen Methoden überschrieben werden, es sei denn, sie werden als final deklariert. Sei nur sicher, dass du TestMe.method(N n) mit einer Instanz von FakeN aufruft.

    
tibtof 07.06.2012, 22:33
quelle