Знаток Spring тестирует сбой, когда выполнено вместе, но успешно выполнитесь индивидуально (ehcache закрытый, IllegalTransactionStateException)

Мы используем Знатока / Безошибочные и Spring/Быть в спящем режиме транзакционные тесты для довольно большого веб-приложения. Существует 138 Тестов* классы, запуская в общей сложности 1 178 тестов.

Простое mvn test генерирует 82 ошибки, природа которых имеют тенденцию подразумевать поврежденный контекст приложения:

Многие из них:

IllegalTransactionStateException: Pre-bound JDBC Connection found!

Несколько из них:

NoSuchMethodError: org.hibernate.cache.CacheException.<init>(Ljava/lang/Exception;)V

Для каждого проваленного теста, выполняя тестовый класс индивидуально mvn test -Dtest=TestFailingClass успешно выполняется. Действительно, использование -Dtest=TestClass1,TestClass2,Etc с различными подмножествами всего моего теста классы успешно выполняются или перестали работать по-разному. Например, выполнение только провальных тестовых классов успешно выполняется с 0 ошибками.

Без средств очевидного управлять порядком классов, протестированных Безошибочным, мне тяжело определять, какой из моих тестовых классов, кажется, оставляет контекст в плохом состоянии.

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

И конечно, предложения для того, что делать с этим...

6
задан Chris Williams 10 May 2019 в 13:10
поделиться

2 ответа

Действительно, проблема возникает из-за поврежденного контекста приложения Spring. Один из первых тестов - загрязнение контекста и сбой в следующих тестах.

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

Мне удалось добиться этого, используя журнал Maven, чтобы найти порядок запуска тестовых классов, а затем исключать тесты по одному сверху. За тридцать четыре теста я нашел виновника.

Это был тест под названием TestSpringContexts. Добавление @DirtiesContext к этим тестам решает проблему, но она также была решена путем удаления вызовов context.close () из тестов.

Я написал здесь сообщение в блоге об этом процессе, но в этом суть: http://mojo.whiteoaks.com/2010/04/27/finding-the-test-that-corrupts- the-suite /

Mojo

2
ответ дан 17 December 2019 в 18:11
поделиться

Не имея очевидных средств управления порядком классов, тестируемых Surefire, мне трудно определить, какие из моих тестовых классов, кажется, выходят из контекста в плохом состоянии.

Действительно. А выполнение подмножеств тестов даст разные результаты (с точки зрения порядка выполнения), что очень затруднит отладку вашей проблемы.

Но вы могли бы использовать патч из SUREFIRE-321 ( Запускать тесты в алфавитном порядке ), чтобы получить лучший контроль (проверьте комментарии, один из плакатов смотрел очень проблема аналогичная вашей).

1
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: