2
的Mockito
抽象基类的行为我有这样的代码:如何覆盖与
class Outer {
private External external;
class MyCallback extends ExternalAbstractCallback {
void somethingHappened() { if (super.someCondition()) { ... }; }
}
public Outer() {
external = ...;
}
public setExternal(External e) { external = e; } // test support
public void doIt() {
external.setCallback(new MyCallback());
external.doSomething();
}
}
我想测试的MyCallback
行为时doIt()
被调用。我使用Mockito创建一个模拟外部,然后可以得到external.doSomething()
执行MyCallback.somethingHappened。我可以在第4行将呼叫的返回值控制为super.someCondtion
吗?我可以重新安排实施以提高可测性吗? External
和ExternalAbstractCallback
的实现无法更改。
+1覆盖的第一句话。但是为MyCallback添加getter/setter似乎是不可能的,因为MyCallback是一个内部类。 – 2013-03-26 17:37:43
什么阻止你提取内部类? – 2013-03-27 08:36:58
那么?做你需要改变的东西[包私人](http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and-private)。 – 2013-03-28 11:42:12