У меня очень неприятное время, когда я провожу тестирование с использованием Grails. Я опишу свой опыт, и я хотел бы знать, есть ли лучший способ.
- Первая проблема, с которой я столкнулся при тестировании, заключается в том, что Grails не дает немедленной обратной связи разработчику при сбое .save () внутри интеграционного теста. Допустим, у вас есть класс домена с 12 полями, и одно из них нарушает ограничение, и вы не знаете его при создании экземпляра ... он просто не сохраняется. Естественно, что тестовый код впоследствии потерпит неудачу.
Это наиболее неприятно, потому что тестируемый предмет, вероятно, в порядке ... а реальный риск и боль - это код настройки для самого теста.
Итак, я попытался выработать привычку использовать .save (failOnError: true), чтобы избежать этой проблемы, но это не то, что легко может быть применено всеми, кто работает над проектом ... и это отчасти вздор , Было бы неплохо включить это для кода, который выполняется как часть модульного теста автоматически.
Интеграционные тесты работают медленно. Я не могу понять, как 1 интеграционный тест, который сохраняет 1 объект, занимает 15-20 секунд для запуска. Благодаря тщательному планированию тестов, я смог получить 1000 тестов, обращающихся к реальной базе данных, и делать дампы dbunit после каждого теста, проводимого примерно в одно и то же время! Это глупо.
Трудно запустить все модульные тесты, а не интеграционные тесты в IDEA.
Интеграционные тесты - огромная боль. Идея фактически показывает ЗЕЛЕНЫЙ БАР, когда интеграционные тесты не пройдены. Вывод, предоставленный grails, указывает, что что-то не удалось, но не говорит, что это было. Это говорит о том, что нужно смотреть в протоколах испытаний ... что заставляет разработчика запускать свою файловую систему для поиска глупого html-файла. Что за боль.
Затем, как только вы получите html-файл и перейдете к провалу теста, он сообщит вам номер строки. Поскольку этих отчетов нет в IDE, вы не можете просто щелкнуть трассировку стека, чтобы перейти к этой строке кода ... вам нужно вернуться и найти ее самостоятельно. ARGGH! @! @!
Может быть, люди с этим мирились, но я отказываюсь. Тестирование не должно быть таким болезненным. Это должно быть быстро и безболезненно, иначе люди не будут этого делать.
Пожалуйста, помогите. Каково решение? Рельсы вместо Грааля? Что-то еще целиком? Мне нравится среда Grails, но по какой-то причине они никогда не демонстрируют свои тесты. У них шикарная структура, но тестирование болезненно.
После использования Scala в течение последних 1,5 месяцев и полной испорченности ScalaTest ... я не могу вернуться к этому.