据我了解,TestExecutionListeners就像JUnit中的@BeforeClass
方法一样。我不明白为什么我需要使用DependencyInjectionTestExecutionListener
,TransactionalTestExecutionListener
和DirtiesContextTestExecutionListener
来使用DbUnitTestExecutionListener
。
通常没有DbUnit,我可以创建并填充数据库。为什么我突然需要使用这些监听器为我的数据库做一些CRUD
?
答案 0 :(得分:32)
TestExecutionListeners
为在Spring TestContext Framework中运行的测试提供各种类型的功能。
如果您对特定侦听器的作用感兴趣,最好的方法是阅读相应类的Javadoc。此外,Spring参考手册的Testing chapter详细介绍了如何使用每个监听器以及它们的用途。
在您的特定情况下,如果您未使用@DirtiesContext
,则不需要使用DirtiesContextTestExecutionListener
。至于DependencyInjectionTestExecutionListener
和TransactionalTestExecutionListener
,您可能需要将它们注入您的测试中(例如,通过@Autowired
,@Inject
,@Resource
等。)并且用于事务测试(即,使用@Transactional
注释的测试)。
请注意,默认情况下会启用上述侦听器。因此,如果您一直在使用Spring TestContext Framework 而没有任何自定义侦听器(如DbUnit),那么您从未意识到侦听器存在。参考手册中关于TestExecutionListener configuration的部分也应该有助于澄清事情。但请注意,默认侦听器的合并和自动检测等功能仅在Spring Framework 4.1 +中可用。
此致
Sam (Spring TestContext Framework的作者)