我需要单元测试一个事件监听器的功能,但是我从来没有做过,我似乎无法找到任何有关它的例子。有没有人有任何建议,以一个很好的方式去做到这一点?单元测试事件监听器
回答
没有多少关系,构建事件侦听器,传入模拟事件并进行测试。当你按照标准模式创建事件侦听器,在这里你定义了直接与含有类交互的匿名类可能出现
@Test
public void testEventListener() {
ActionListener subjectUnderTest = new MyActionListener();
ActionEvent mockEvent = mock(ActionEvent.class);
// Or just create a new ActionEvent, e.g. new ActionEvent();
// setup mock
subjectUnderTest.actionPerformed(mockEvent);
// validate
}
问题。然而,将这样的类重构为它自己的完整类并不难,并且将任何依赖关系传递给构造函数,而不是隐式地从周围类中传递。
这可能是一个愚蠢的问题,但我该如何设置模拟事件呢?有没有简单的我可以在标准的Java库中使用来做到这一点,或者它需要外部库? – endorphins
通常,您使用模拟库来执行此操作,但是如果您不想使用它,则可以直接创建事件的实例。我是[Mockito](http://code.google.com/p/mockito/)库的粉丝,非常易于使用。如果您之前没有在单元测试中创建模拟对象,那么您会严重限制您可以运行的测试类型。我推荐[使用TestNG和Mockito的实用单元测试](http://www.amazon.com/Practical-Unit-Testing-TestNG-Mockito/dp/839348930X)作为底层。 – dimo414
我只做了相对简单的单元测试,并不需要模拟对象,但我听说过它。我很欣赏这个指导,我会确保看一下这个底漆。谢谢您的帮助。 – endorphins
- 1. Phalcon单元测试监听器事件
- 2. 单元中拆离ZF2事件监听测试
- 3. 事件监听器?
- 4. Laravel监听器监听多个事件
- 5. 缓存事件监听器 - 检索元
- 6. 提交表单的事件监听器
- 7. 单击ExtJS中的事件/监听器
- 8. 表单输入事件监听器
- 9. 如何测试Camunda中的事件监听器?
- 10. 如何测试窗口点击角度事件监听器
- 11. 在Angular服务中测试事件监听器的输出
- 12. RxJS监听事件但稍后附加事件监听器
- 13. NHibernate事件监听器
- 14. 切换事件监听器
- 15. Gideros GTween事件监听器
- 16. Keypress事件监听器
- 17. 事件监听器在PHP
- 18. jqgrid reloadGrid事件监听器
- 19. Java事件监听器
- 20. jquery fadeout事件监听器
- 21. Android AudioManager事件监听器?
- 22. 被动事件监听器
- 23. 回调事件监听器
- 24. 事件监听器循环
- 25. NHibernate多事件监听器
- 26. javascript事件监听器
- 27. GM_setValue事件监听器
- 28. supervisord事件监听器
- 29. Android,事件监听器?
- 30. 删除事件监听器
什么样的事件监听器? –
它是自己的类(不是匿名的),它实现了一个不属于标准java库的接口(该接口直接扩展了EventListener)。 – endorphins