Unitils vs Spring TestContext Framework
Я думаю о том, какую среду тестирования использовать для моего веб-приложения Spring + Hibernate. Сначала я заметил и заинтересовался Unitils, но потом увидел стандартную среду Spring TestContext Framework и начал сомневаться. Я довольно новичок в этом вопросе, но до сих пор я понимаю следующее:
Юнитилс плюсы:
- имеет смесь различных других сред тестирования, например, EasyMock или DbUnit
- основывается на фреймворках, предоставляя некоторую дополнительную ценность, например, тесты отображения гибернации или утилиты тестирования отражения
Преимущества Spring TestContext Framework:
- позволяет использовать стандартные весенние аннотации при тестировании
- вероятно, имеет большую базу пользователей и лучшую поддержку (это мое предположение, поскольку Unitils, кажется, в основном создается двумя людьми)
- также имеет некоторые встроенные функции Unitils (такие как утилиты тестирования отражения)
- если мне нужны какие-либо более крупные функции Unitils, такие как DbUnit или EasyMock, я могу просто получить обычный DbUnit или EasyMock прямо из источника - это позволяет мне всегда иметь самую последнюю версию DbUnit/EasyMock, не дожидаясь, пока Unitils выпустит их новая версия с текущим DbUnit/EasyMock
Поэтому сейчас я больше склоняюсь к использованию Spring TestContext Framework. Кто-нибудь имеет немного больше опыта работы с этими фреймворками и может помочь мне в правильном направлении? Что на самом деле предлагает Unitils, кроме интеграции всех этих фреймворков?
[РЕДАКТИРОВАТЬ] Только что узнал о нескольких вещах, предоставленных Unitils:
- некоторые улучшения в DbUnit, такие как аннотация @DataSet (в Spring TestContext Framework кажется, что вам нужно написать немного больше кода самостоятельно, если вы хотите использовать его с DbUnit, как описано здесь: http://blog.zenika.com/index.php?post/2010/02/04/Testing-SQL-queries-with-Spring-and-DbUnit%2C-part-1)
- возможность отключить ограничения базы данных в ваших тестах
Вот хорошая презентация о Unitils, которая убедила меня начать использовать Unitils: http://www.javapolis.com/confluence/download/attachments/32918/C_14_09_04.pdf
Я пока оставляю вопрос открытым, может быть, у кого-то возникнут другие мысли...
2 ответа
Мы используем тестовые рамки Unitils и Spring в нашем проекте. С юнитилами у нас возникли проблемы с наличием нескольких постоянных блоков. Unitils не поддерживает это. Конечно весна делает.
Еще одна проблема, с которой мы столкнулись, я опубликовал здесь: Использование unitils / dbMaintain для поддержки базы данных, как исключить запуск сценариев?
По сути, unitils не обладает всеми последними функциями каждой из базовых платформ, таких как DBMaintain, потому что unitils использует "старые" версии других платформ под прикрытием.
Тем не менее, у Unitils есть несколько удобных методов, таких как те, что представлены в DatabaseUnitils. Нам особенно нравится updateSequences()
Поэтому для максимальной гибкости и / или если вы ожидаете довольно сложную структуру кода, я бы по возможности придерживался тестовой среды Spring.
Во многих других случаях unitils - очень удобный инструмент.
И немного ps.. когда это возможно, я бы рекомендовал отдавать предпочтение модульным тестам и макетам, таким как Mockito, а не интеграционным тестам Я всегда был "тестом интеграции", и в этом последнем проекте он превратился в проблему технического обслуживания.
Unitils - это очень хорошая структура, как вы заметили.
Плюсы:
- Unitils теперь использует Spring Jars.
- На мой взгляд, модуль Unitils Inject прекрасно работает, хотя весной этого можно добиться и с этим.
Минусы: Как вы уже сказали, я считаю, что на форуме Unitils не хватает должной поддержки. Я вижу много тем, на которые давно не отвечали. Однако stackru имеет хорошую поддержку для него:-) за исключением случаев, когда вам нужны дополнительные функции или исправления ошибок.
Лично я считаю Unitils хорошими для моего тестирования.