我正在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()是被调用的版本而不是FakeNs 版本。
这里有我可以使用的解决方法吗?