5

我有一个简单的 Guava EventBus,它带有一个简单的事件和一个简单的监听器。我的问题是在发布事件后检查是否调用了侦听器方法的测试模式是什么。

4

2 回答 2

14

我建议测试 EventBus 是否正常工作不是您应该编写的 UNIT 测试。使用库(至少使用您信任的库)的优点之一是单元测试是由库提供者编写的。因此,请不要浪费您的时间来验证 Google 人员是否正确编写了 EventBus。要编写系统的单元测试,应该模拟 EventBus,因此不会调用您的侦听器。这是使用消息总线的优点之一,它允许隔离单独的应用程序关注点,从而更容易进行单元测试。

当您准备好这样做时,这将是一个集成测试,用于测试整个系统是否协同工作。在某些情况下,这也可能是用 JUnit 编写的,但不要认为它是一个单元测试。如何执行此操作取决于您的系统。您可以将 Spring 上下文加载到 JUnit 测试中,或者您可以部署应用程序并针对它运行测试。

于 2013-05-07T10:27:06.573 回答
2

这种测试通常是通过使用像Mockito这样的模拟框架来完成的。创建一个模拟监听器,将其注册到事件总线,触发事件,并验证监听器方法是否被调用。

在这里找到一个关于如何创建模拟以及如何验证与它的交互的非常基本的示例。

于 2013-05-07T09:18:30.920 回答