Мы используем Знатока / Безошибочные и 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 ошибками.
Без средств очевидного управлять порядком классов, протестированных Безошибочным, мне тяжело определять, какой из моих тестовых классов, кажется, оставляет контекст в плохом состоянии.
То, что я ищу, является стратегией помочь определить то, что происходит некоторым детерминированным способом. Я могу, конечно, видеть порядок тестового прогона от журнала, но я не могу воспроизвести тот порядок управляемо.
И конечно, предложения для того, что делать с этим...
Действительно, проблема возникает из-за поврежденного контекста приложения Spring. Один из первых тестов - загрязнение контекста и сбой в следующих тестах.
Одна из трудностей - попытаться контролировать порядок тестов при обнаружении теста, вызывающего проблему.
Мне удалось добиться этого, используя журнал Maven, чтобы найти порядок запуска тестовых классов, а затем исключать тесты по одному сверху. За тридцать четыре теста я нашел виновника.
Это был тест под названием TestSpringContexts. Добавление @DirtiesContext к этим тестам решает проблему, но она также была решена путем удаления вызовов context.close () из тестов.
Я написал здесь сообщение в блоге об этом процессе, но в этом суть: http://mojo.whiteoaks.com/2010/04/27/finding-the-test-that-corrupts- the-suite /
Mojo
Не имея очевидных средств управления порядком классов, тестируемых Surefire, мне трудно определить, какие из моих тестовых классов, кажется, выходят из контекста в плохом состоянии.
Действительно. А выполнение подмножеств тестов даст разные результаты (с точки зрения порядка выполнения), что очень затруднит отладку вашей проблемы.
Но вы могли бы использовать патч из SUREFIRE-321 ( Запускать тесты в алфавитном порядке ), чтобы получить лучший контроль (проверьте комментарии, один из плакатов смотрел очень проблема аналогичная вашей).