我正在使用EasyMock对一个叫做
TestMe
的类进行单元测试,其中的一个方法(比如说method(N n)
)期望一个类型为N
的参数,该类型具有一个本地方法(比如说nativeMethod()
)。class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
需要在某个时刻调用 N.nativeMethod()
,但我遇到的问题是,我的 Easymock mock 对象无法覆盖原生方法。虽然我没有拥有类 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
的版本。
这里是否有一种解决方法可供使用?
native
似乎不是签名的一部分。 - scorpiodawg