我们有一堆类从服务器侦听事件然后响应它们.例如:
class EventManager {
private Set cache = new HashSet();
private EventListener eventListener = new EventListener() {
void onEvent(Event e) {
if (e instanceof MyEvent || e instanceof YourEvent) {
handleEvent(e);
}
}
}
public EventManager(ServerCommunication serverComm) {
serverComm.addListener(eventListener);
}
private handleEvent(Event e) {
// handle the event…
// …
cache.add(cache);
// …
}
}
这是我们正在做的事情的一个组成例子.以下是我看到的问题:
>我想测试handleEvent以确保它正在做它应该做的事情,但我不能,因为它是私有的.
>我也想检查一下是否有东西被添加到缓存中,但这似乎也很困难,因为缓存是私有成员,我不想添加一个不必要的getter方法.
>我还想测试匿名类的onEvent方法中的代码.
现在,我所做的是将所有逻辑从匿名类移到handleEvent方法,并使handleEvent包为private(我的单元测试在同一个包中).我不是在检查缓存的内容,尽管我想.
有没有人对更可测试的更好的设计有任何建议?