Unitils против Spring TestContext Framework - PullRequest
3 голосов
/ 16 ноября 2011

Я думаю о том, какую инфраструктуру тестирования использовать для моего веб-приложения spring + hibernate. Сначала я заметил и заинтересовался Unitils, но потом увидел стандартную среду Spring TestContext Framework и начал сомневаться. Я довольно новичок в этой теме, но до сих пор я понимаю следующее:

Юниты профи:

  • имеет набор различных других сред тестирования, то есть EasyMock или DbUnit
  • основывается на фреймворках, предоставляя некоторую дополнительную ценность, то есть тесты отображения hibernate или утилиты тестирования отражения

Spring TestContext Framework Плюсы:

  • позволяет использовать стандартные аннотации Spring при тестировании
  • вероятно, имеет большую пользовательскую базу и лучшую поддержку (это мое предположение, поскольку 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 ]

3 голосов
/ 21 февраля 2012

Мы используем тестовую среду Unitils и Spring в нашем проекте.С юнитилами у нас возникли проблемы с наличием более одного модуля PersistenceUnit.Unitils не поддерживает это.Конечно весна делает.

Другая проблема, с которой мы столкнулись, я опубликовал здесь: Использование unitils / dbMaintain для поддержки базы данных, как исключить запуск сценариев?

По сути, unitils не имеетвсе последние функции каждой из базовых платформ, таких как DBMaintain, потому что unitils использует «старые» версии других платформ под прикрытием.

Тем не менее, у Unitils есть несколько удобных методов, таких как некоторые из DatabaseUnitils .Нам особенно нравится updateSequences()

Так что для максимальной гибкости и / или если вы ожидаете довольно сложную структуру кода, я бы по возможности придерживался тестовой среды Spring.

Во многих других случаях unitils - очень удобный инструмент.

И немного пс ... когда это возможно, я бы рекомендовал отдавать предпочтение модульным тестам и макетам, таким как Mockito, а не интеграционным тестам.Я всегда был «тестом интеграции», и в этом последнем проекте он стал чем-то вроде технического обслуживания.

1 голос
/ 09 января 2012

Unitils - это очень хорошая структура, как вы заметили.

Плюсы:

  1. Теперь Unitils использует банки Spring.
  2. Модуль впрыска Unitils отлично работает, на мой взгляд, хотя и весной можно добиться чего-то подобного.1008 *

Минусы: Как вы сказали, я считаю, что на форуме Unitils не хватает надлежащей поддержки.Я вижу много тем, на которые давно не отвечали.Однако stackoverflow имеет хорошую поддержку для него :-), за исключением случаев, когда вам нужны дополнительные функции или исправления ошибок.

Лично я считаю Unitils подходящим для моего тестирования.

...