加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何测试调用私有方法的匿名内部类

发布时间:2020-12-15 08:34:36 所属栏目:Java 来源:网络整理
导读:我们有一堆类从服务器侦听事件然后响应它们.例如: class EventManager { private SetEvent cache = new HashSetEvent(); private EventListener eventListener = new EventListener() { void onEvent(Event e) { if (e instanceof MyEvent || e instanceof
我们有一堆类从服务器侦听事件然后响应它们.例如:

class EventManager {
    private Set<Event> cache = new HashSet<Event>();

    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(我的单元测试在同一个包中).我不是在检查缓存的内容,尽管我想.

有没有人对更可测试的更好的设计有任何建议?

解决方法

我可能会提取一个EventCache组件.您可以使用实现计算缓存事件或记录任何感兴趣的内容来替换此测试.

我可能不会改变handleEvent的可见性.您可以实现一个ServerCommunication,它只是从测试用例中引发事件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读