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