web-dev-qa-db-fra.com

Que sont les TestExecutionListeners et que font-ils?

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?

22
Ali Arda Orhan

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)

38
Sam Brannen