sco*_*awg 9 java android overriding native-methods easymock
我TestMe使用EasyMock 对一个类进行单元测试,并且其中一个方法(比如说method(N n))期望一个N具有本机方法的类型的参数(比方说nativeMethod()).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
但是虽然编译器没有抱怨,但是当我运行测试时,它似乎N.nativeMethod()是被调用的而不是FakeNs版本.
我可以使用这里的解决方法吗?
该native方法可以被覆盖,就像任何其他的方法,除非将它们声明final.请确保您使用的是TestMe.method(N n)一个实例FakeN.
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |