Я модульно тестирую класс TestMe
с помощью EasyMock, и один из его методов (говоритmethod(N n)
)ожидает параметр типа N
, который имеет собственный метод (, напримерnativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
в какой-то момент нужно вызвать N.nativeMethod()
, и проблема, с которой я столкнулся, заключается в том, что мой фиктивный объект Easymock для N не может переопределить собственный метод. У меня нет класса 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
версия.
Есть ли здесь обходной путь, который я могу использовать?