8
我使用EasyMock對一個類TestMe
進行單元測試,其中一種方法(比如說method(N n)
)需要一個N
類型的參數,該參數有一個本地方法(比如nativeMethod()
)。是否可以重寫Android/dalvik中的Java類中的本地方法?
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
需要在某些點調用N.nativeMethod()
,和我遇到的問題是,對於N我EasyMock的模擬對象是無法覆蓋本地方法。我不擁有N班,但我可以用任何必要的方式重構TestMe
。
我決定把我自己的類FakeN extends N
它覆蓋nativeMethod
什麼都不做:
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
}
}
但是當編譯器不抱怨,當我運行測試,似乎N.nativeMethod()
是被調用的一個,而不是FakeN
s版本。
有沒有我可以使用的解決方法?
這就是我從[本頁](http://www.coderanch.com/t/380733/java/java/Overriding-Native-Method-java-io)的評論中想到的,但它似乎並沒有工作。我會回去看看我是否搞砸了。 – scorpiodawg
原來的方法可以被非本地方法覆蓋,反之亦然。 'native'似乎不是簽名的一部分。 – scorpiodawg