什么是TestExecutionListeners,它们做什么?

时间:2014-12-08 20:52:25

标签: spring spring-test spring-test-dbunit

据我了解,TestExecutionListeners就像JUnit中的@BeforeClass方法一样。我不明白为什么我需要使用DependencyInjectionTestExecutionListenerTransactionalTestExecutionListenerDirtiesContextTestExecutionListener来使用DbUnitTestExecutionListener

通常没有DbUnit,我可以创建并填充数据库。为什么我突然需要使用这些监听器为我的数据库做一些CRUD

1 个答案:

答案 0 :(得分:32)

TestExecutionListeners为在Spring TestContext Framework中运行的测试提供各种类型的功能。

如果您对特定侦听器的作用感兴趣,最好的方法是阅读相应类的Javadoc。此外,Spring参考手册的Testing chapter详细介绍了如何使用每个监听器以及它们的用途。

在您的特定情况下,如果您未使用@DirtiesContext,则不需要使用DirtiesContextTestExecutionListener。至于DependencyInjectionTestExecutionListenerTransactionalTestExecutionListener,您可能需要将它们注入您的测试中(例如,通过@Autowired@Inject@Resource等。)并且用于事务测试(即,使用@Transactional注释的测试)。

请注意,默认情况下会启用上述侦听器。因此,如果您一直在使用Spring TestContext Framework 而没有任何自定义侦听器(如DbUnit),那么您从未意识到侦听器存在。参考手册中关于TestExecutionListener configuration的部分也应该有助于澄清事情。但请注意,默认侦听器的合并和自动检测等功能仅在Spring Framework 4.1 +中可用。

此致

Sam (Spring TestContext Framework的作者)