Как проверить, действительно ли мои транзакционные методы поддерживают транзакции? - PullRequest
2 голосов
/ 06 января 2010

Я использую Spring 3.0, и у меня есть такой набор методов:

@Transactional (value = "authTransactionManager")
public void remove(User user) {
    ...
}

Я использую 2 разных менеджера транзакций и указываю необходимый менеджер (authTransactionManager в примере выше).

Мне было любопытно, что произойдет, если я укажу несуществующий менеджер. Я ожидал исключение при компиляции или во время выполнения, но все работало нормально. Вот почему я сомневаюсь, что какие-либо транзакции когда-либо поддерживались в моих методах.

Как я могу это проверить? (может быть, Spring такой умный, что использует любой доступный менеджер, когда указан несуществующий менеджер и все мои сомнения беспочвенны?)

Ответы [ 2 ]

2 голосов
/ 06 января 2010

Вы можете включить ведение журнала на уровне отладки, это обычно то, что я делаю при отладке подобных транзакций!

Spring неплохо умеет регистрировать транзакции.

1 голос
/ 06 января 2010

Вот 2 варианта:

(1) Использовать интеграционные тесты.Вы можете использовать такие инструменты, как dbUnit , чтобы загрузить данные в базу данных, а затем написать тесты для БД, используя транзакции.(Мы делаем это все время для тестирования наших отображений XML Hibernate. Фактически, тесты выполняются как часть автоматической сборки.)

(2) Используйте FIT тесты .Это совсем другой зверь: функциональные тесты для системы.Тесты FIT потребуют, чтобы «приспособления» действовали как связующее звено между вашими тестами и вашей системой, но они могут помочь в решении этой проблемы.(Это может быть излишним в этом случае.)

В обоих случаях у вас есть возможность либо (а) провести некоторое быстрое и грязное тестирование как проверку работоспособности, либо (б) разработать подсистему тестирования,входит в вашу автоматическую сборку.(Мы используем как интеграционные, так и FIT-тесты для случая (b)).

...