2014-12-08 2 views
13

Насколько я понимаю, TestExecutionListeners действуют как @BeforeClass методов в JUnit. Я не понимаю, почему мне нужно использовать DependencyInjectionTestExecutionListener, TransactionalTestExecutionListener и DirtiesContextTestExecutionListener для использования DbUnitTestExecutionListener.Что такое TestExecutionListeners, и что они делают?

Обычно без DbUnit я могу создать и заполнить базу данных. Почему вдруг мне нужно использовать этих слушателей, чтобы сделать CRUD для моей базы данных?

ответ

22

TestExecutionListeners Предоставляет различные типы функциональных возможностей для тестов, запущенных в Spring TestContext Framework.

Если вас интересует то, что делает конкретный слушатель, лучший способ узнать это прочитать Javadoc для соответствующего класса. Кроме того, в справочнике Testing chapter руководства по весне подробно рассказывается о том, как использовать каждого из слушателей и что они делают.

В вашем конкретном случае, если вы не используете @DirtiesContext, вам не нужно использовать DirtiesContextTestExecutionListener. Что касается DependencyInjectionTestExecutionListener и TransactionalTestExecutionListener, вам, вероятно, понадобятся они для ввода зависимостей в ваш тест (например, через @Autowired, @Inject, @Resource и т. Д.) И для транзакционных тестов (т. Е. Тестов, аннотированных @Transactional).

Обратите внимание, что вышеупомянутые слушатели включены по умолчанию. Поэтому, если вы используете Spring TestContext Framework без любых пользовательских слушателей, таких как DbUnit, тогда вы просто не понимали, что слушатели существуют. Раздел в TestExecutionListener configuration в справочном руководстве также должен помочь прояснить ситуацию. Обратите внимание, однако, что некоторые функции, такие как слияние и автоматическое обнаружение слушателей по умолчанию, доступны только в Spring Framework 4.1+.

С уважением,

Сэм (автор Spring Framework TestContext)

 Смежные вопросы

  • Нет связанных вопросов^_^