Как заставить Спока повторить неудачные тесты Геба?

У меня есть функциональные тесты для приложения Grails, в которых используются Геб и Спок. Иногда функциональный тест завершается неудачно из-за тайм-аутов или другого спорадического поведения. В предыдущих проектах, использующих TestNG, у меня был бы retryAnalyzer, который просто запускал бы повторную попытку во время выполнения теста, чтобы увидеть, не сработает ли он оба раза (а затем потерпит неудачу по-настоящему).

Как мне заставить Спока повторить неудачный тест?


person John Flinchbaugh    schedule 13.07.2012    source источник


Ответы (2)



Вам нужно будет написать небольшое правило JUnit (например, что-то вроде https://gist.github.com/897229) или расширение Spock. Вероятно, вам придется жить с некоторыми ограничениями, такими как повторное использование одного и того же экземпляра спецификации и JUnit, просто сообщающий об одном тесте, но, надеюсь, ничего, что полностью исключает подход. (Одна вещь, которая приходит в голову, - это то, что насмешка может не сработать.) В будущей версии Spock повторение теста (или его строительных блоков), вероятно, станет первоклассной концепцией, устраняющей эти ограничения.

person Peter Niederwieser    schedule 13.07.2012
comment
Я, наконец, пошел по маршруту правил junit и добавил класс, аналогичный приведенному здесь: stackoverflow.com/questions/8295100/. Я помещаю операторы println вокруг вызова base.evaluate (), и я могу сказать, что мое правило выполняется, но я обнаружил, что оно всегда возвращает, и я никогда не вижу брошенного Throwable, даже если отказ. Есть ли другой способ сказать, что тест не прошел? - person John Flinchbaugh; 19.10.2012