Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt 如何在eventbus中编写跟踪事件流的测试?_Gwt_Event Bus_Mvp4g - Fatal编程技术网

Gwt 如何在eventbus中编写跟踪事件流的测试?

Gwt 如何在eventbus中编写跟踪事件流的测试?,gwt,event-bus,mvp4g,Gwt,Event Bus,Mvp4g,详细描述: 在使用mvp4g的gwt应用程序中,eventbus中的事件流相当复杂。作为演示者/处理者的反应,一个事件(如登录)会产生多个其他事件。目前,我们很难理解事件是如何相互关联的,即哪些事件必须在这个特定事件之后发生。 我们有针对演示者和视图的测试,但我们缺少能够清楚地显示/模拟事件流的测试,最好不使用真实视图和服务 简短描述: 应开发关于eventBus(?)的新测试,该测试应清楚地描述和测试事件流 我有一些rud想法,但听起来都不令人满意: 编写mvp4g eventbus的自定义实

详细描述: 在使用mvp4g的gwt应用程序中,eventbus中的事件流相当复杂。作为演示者/处理者的反应,一个事件(如登录)会产生多个其他事件。目前,我们很难理解事件是如何相互关联的,即哪些事件必须在这个特定事件之后发生。
我们有针对演示者和视图的测试,但我们缺少能够清楚地显示/模拟事件流的测试,最好不使用真实视图和服务

简短描述: 应开发关于eventBus(?)的新测试,该测试应清楚地描述和测试事件流

我有一些rud想法,但听起来都不令人满意:

  • 编写mvp4g eventbus的自定义实现(可能很难看),并:

    • 使用真实的演示者
    • 使用模拟(?)视图
    • 模拟服务
    • 验证所有生成的服务调用
    • 为什么不冷静一下呢?(a)在这种情况下,测试不会直接验证生成的事件,而只验证具有服务的事件(b) EventBus实现看起来相当可怕——它必须用模拟的服务和视图创建每个演示者
  • 找到一种使用一些神奇的mvp4g机制在测试和模拟VIE、服务中创建eventBus的方法

    • 为什么不酷呢:与上一篇相同-只能通过服务进行间接验证,我无法找到如何手动创建eventBus并解决GIN、GWT模块间依赖关系等所有问题。我想没有简单的方法可以做到这一点

  • 对于测试中跟踪事件树的问题,有没有通用的解决方案?我想我不是第一个关注复杂事件总线事件流的人。

    是否要测试事件总线?还是要跟踪所有已触发的事件? 如果你想跟踪你的事件,也许某种EventMonitor可以帮助你?实现所有必需的EventHandler并记录发生的每个事件的类。 像这样的?只需在测试开始之前实例化该类

    import java.util.logging.Logger;
    
    import com.google.gwt.event.shared.GwtEvent;
    import com.google.web.bindery.event.shared.EventBus;
    
    public class EventMonitor implements AEventHandler, BEventHandler /* , ... */{
    
        private static int event_count = 1;
    
        private final Logger logger = Logger.getLogger(this.getClass().getName());
    
        public EventMonitor(EventBus eventBus) {
            eventBus.addHandler(AEvent.getType(), this);
            eventBus.addHandler(BEvent.getType(), this);
            // [...]
        }
    
        private void logEvent(GwtEvent<?> event) {
    
            logger.info(event_count + " useful information");
            event_count++;
        }
    
        @Override
        public void onAEvent(AEvent event) {
            logEvent(event);
        }
    
        @Override
        public void onBEvent(BEvent event) {
            logEvent(event);
        }
    
    
    }
    
    import java.util.logging.Logger;
    导入com.google.gwt.event.shared.GwtEvent;
    导入com.google.web.bindery.event.shared.EventBus;
    公共类EventMonitor实现AEventHandler、BEventHandler/*、*/{
    私有静态int事件计数=1;
    私有最终记录器=Logger.getLogger(this.getClass().getName());
    公共事件监视器(EventBus EventBus){
    addHandler(AEvent.getType(),this);
    addHandler(BEvent.getType(),this);
    // [...]
    }
    私有无效日志事件(GwtEvent事件){
    logger.info(事件计数+有用信息);
    事件计数++;
    }
    @凌驾
    公共事件(AEvent事件){
    日志事件(事件);
    }
    @凌驾
    BEvent上的公共作废(BEvent事件){
    日志事件(事件);
    }
    }
    
    我们讨论的是mvp4g事件总线,它与本机GWT事件总线完全不同。已实现ired事件的日志记录。使用@Debug记录激发和消耗的事件。