番石榴EventBus单元测试

时间:2013-05-07 08:49:24

标签: java junit guava

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

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:2)

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

查找here一个关于如何创建模拟以及如何验证模拟交互的基本示例。

相关问题