Android Square Otto事件总线-如何使用junit和RoboeElectric测试post和订阅
如何在android中测试事件总线。我在用奥托。我试过: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
@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进行测试,我不测试框架,我测试我的代码和调用以及我的业务逻辑