Pour autant que je sache, TestExecutionListeners agit comme @BeforeClass
méthodes dans JUnit. Ce que je ne comprends pas, c'est pourquoi j'ai besoin d'utiliser DependencyInjectionTestExecutionListener
, TransactionalTestExecutionListener
et DirtiesContextTestExecutionListener
pour utiliser DbUnitTestExecutionListener
.
Normalement, sans DbUnit, je peux créer et remplir la base de données. Pourquoi dois-je soudainement utiliser ces écouteurs pour faire un CRUD
pour ma base de données?
TestExecutionListeners
fournit différents types de fonctionnalités aux tests exécutés dans Spring TestContext Framework.
Si vous êtes intéressé par ce que fait un auditeur particulier, la meilleure façon de le savoir est de lire le Javadoc pour la classe respective. De plus, le chapitre Testing du manuel de référence Spring explique en détail comment utiliser chacun des écouteurs et ce qu'ils faire.
Dans votre cas particulier, si vous n'utilisez pas @DirtiesContext
, vous n'avez pas besoin d'utiliser le DirtiesContextTestExecutionListener
. Quant à DependencyInjectionTestExecutionListener
et TransactionalTestExecutionListener
, vous en aurez probablement besoin pour injecter des dépendances dans votre test (par exemple, via @Autowired
, @Inject
, @Resource
, etc.) et pour les tests transactionnels (c'est-à-dire les tests annotés avec @Transactional
).
Notez également que les écouteurs susmentionnés sont activés par défaut. Donc, si vous avez utilisé le framework Spring TestContext sans aucun écouteur personnalisé comme celui de DbUnit, vous ne vous êtes tout simplement jamais rendu compte que les écouteurs existaient. La section sur configuration TestExecutionListener dans le manuel de référence devrait également aider à clarifier les choses. Notez cependant que certaines fonctionnalités telles que la fusion et la détection automatique des écouteurs par défaut ne sont disponibles que dans Spring Framework 4.1+.
Cordialement,
Sam (auteur du Spring TestContext Framework)