我正在对一个类进行单元测试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 版本。
这里有我可以使用的解决方法吗?
The native
方法可以像任何其他方法一样被重写,除非它们被声明final
。只要确保您正在拨打电话即可TestMe.method(N n)
与一个实例FakeN
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)