TestMe
EasyMock を使用してクラスの単体テストを行っていますが、そのメソッドの 1 つ (たとえば ) は、ネイティブ メソッド (たとえば ) を持つmethod(N n)
型のパラメータを期待しています。N
nativeMethod()
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
ここで使用できる回避策はありますか?