Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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
Android Square Otto事件总线-如何使用junit和RoboeElectric测试post和订阅_Android_Junit_Otto - Fatal编程技术网

Android Square Otto事件总线-如何使用junit和RoboeElectric测试post和订阅

Android Square Otto事件总线-如何使用junit和RoboeElectric测试post和订阅,android,junit,otto,Android,Junit,Otto,如何在android中测试事件总线。我在用奥托。我试过: @Mock Bus bus; 在我的测试中,我表现得很好。但是现在我想做的是发布一个事件,然后检查是否执行了该操作。事件的创建方式如下所示: verify(bus).post(captor.capture()); assertThat(captor.getValue().isFlagSet(), equalTo(true)); verify(bus).post(isA(OTTOEventClass.class)); new C

如何在android中测试事件总线。我在用奥托。我试过:

@Mock 
Bus bus;
在我的测试中,我表现得很好。但是现在我想做的是发布一个事件,然后检查是否执行了该操作。事件的创建方式如下所示:

verify(bus).post(captor.capture());
assertThat(captor.getValue().isFlagSet(), equalTo(true));
verify(bus).post(isA(OTTOEventClass.class)); 

new CoolEvent(真,真)但我不知道检查订户代码是否执行的命令。我能用Captor吗?这是如何做到的?

我已经知道了如何测试它。你可以做两件事。一种是使用Mockito并执行以下操作:

 ArgumentCaptor<OTTOEventClass> captor = ArgumentCaptor
                   .forClass(OTTOEventClass.class);
您还可以验证OTTOEventClass中的某些标志设置如下:

verify(bus).post(captor.capture());
assertThat(captor.getValue().isFlagSet(), equalTo(true));
verify(bus).post(isA(OTTOEventClass.class)); 
您可以做的另一件事是验证是否使用以下类型调用了总线post:

verify(bus).post(captor.capture());
assertThat(captor.getValue().isFlagSet(), equalTo(true));
verify(bus).post(isA(OTTOEventClass.class)); 
上面只是验证在测试期间在某个地方调用了
bus.post(new OTTOEventClass())
,并且所发布的事件的类型为OTTOEventClass

我不测试otto订阅服务器,因为我的测试是测试我的功能,而不是otto。让Otto通过square进行测试,我不测试框架,我测试我的代码和调用以及我的业务逻辑