Мы используем транзакционные тесты Maven / Surefire и Spring / Hibernate для довольно большого веб-приложения. Всего существует 138 тестовых * классов, в общей сложности 1178 тестов.
Простое 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 ошибками.
Не имея очевидных средств для контроля порядка классов, тестируемых Surefire, мне трудно определить, какой из моих тестовых классов, похоже, оставляет контекст в плохом состоянии.
То, что я ищу, - это стратегия, помогающая определить, что происходит каким-то детерминированным образом. Я, конечно, могу видеть порядок выполнения тестов из журнала, но я не могу воспроизвести этот порядок контролируемым образом.
И, конечно, предложения, что с этим делать ...