我单元测试类TestMe
使用EasyMock的,和它的方法(比如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
S版。
这儿有解决办法,我可以使用?