Square Otto事件总线 - 如何使用junit和roboelectric测试帖子和订阅

时间:2015-10-14 01:43:31

标签: android junit otto

如何在android中测试事件总线。我正在使用Otto。我试过了:

@Mock 
Bus bus;

在我的测试中得知。但现在我要做的是发布一个事件,然后检查是否已执行该操作。事件创建如下:

new CoolEvent(true,true);但我不知道检查用户代码是否执行的命令。我可以使用Captor吗?这是怎么做到的?

1 个答案:

答案 0 :(得分:4)

我已经发现了如何测试它。你可以做两件事。一个是使用Mockito并执行此操作:

 ArgumentCaptor<OTTOEventClass> captor = ArgumentCaptor
                   .forClass(OTTOEventClass.class);

然后,因为您希望在测试中有一个总线,您可以验证使用OTTOEventClass对象发送到总线的帖子。 像这样:

verify(bus).post(captor.capture());

您还可以验证OTTOEventClass中的某些标志是这样设置的:

assertThat(captor.getValue().isFlagSet(), equalTo(true));

您可以做的另一件事就是验证是否使用某种类型调用了一个总线帖子:

verify(bus).post(isA(OTTOEventClass.class)); 

上面只是验证了bus.post(new OTTOEventClass())在测试过程中被调用的地方,并且发布的事件是OTTOEventClass类型。

我不测试otto用户,因为我的测试是关于测试我的功能而不是Otto。让Otto通过square进行测试,我不测试框架我测试我的代码&amp;电话和我的业务逻辑。