2011-12-05 4 views
4

Недавно я начал работать с большим, унаследованным корпоративным Java-приложением. Он в основном построен на Websphere Commerce 6. Он содержит сочетание EJB 1.x и 2.x, а также довольно много кода, который напрямую подключается к API Commerce.Интеграция тестирования устаревшего приложения Java EE с Arquillian

Я ввел первые модульные тесты, пытаясь сломать зависимости и тщательно реорганизовать небольшие части кода. Мы изучали идею использования инфраструктуры тестирования интеграции, чтобы сделать процесс создания тестов менее хрупким и трудоемким.

Arquillian был предложен как очень хороший вариант для тестирования интеграции. Однако он ориентирован на более «современные» приложения; в большинстве примеров используются Java EE 5+ и Maven. Мы используем J2EE и Ant. В настоящее время мы привязаны к Java 1.4, и, хотя нам может быть возможно перейти на Java 5, мы не будем обновляться до EJB 3.x в ближайшее время. Мы также, вероятно, будем придерживаться Ant.

С этими ограничениями, можно ли использовать Аркиллиан? Или существуют ли лучшие альтернативы для интеграции тестирования традиционных корпоративных приложений Java?

ответ

4

Arquillian предлагается как очень хороший вариант для тестирования интеграции. Однако он ориентирован на более «современные» приложения; в большинстве примеров используются Java EE 5+ и Maven. Мы используем J2EE и Ant. В настоящее время мы привязаны к Java 1.4, и, хотя нам может быть возможно перейти на Java 5, мы не будем обновляться до EJB 3.x в ближайшее время. Мы также, вероятно, будем придерживаться Ant.

С этими ограничениями, можно ли использовать Аркиллиан?

Примечание: Я являюсь автором Arquillian. Я попытался быть объективным в своем ответе.

Это будет действительно зависеть от того, как выполняются ваши тесты. Если вы пытаетесь использовать поддержку Arquillian для тестов внутри контейнера, вы вряд ли найдете решение. WebSphere Commerce 6 использует WebSphere 6.0 в качестве основного контейнера, который в настоящее время не поддерживается Аркиллиан. Если вы можете гипотетически использовать версию WebSphere Commerce, которая использует WAS 7.0 или 8.0 в качестве основы, большая часть моего ответа может быть проигнорирована, так как эти контейнеры поддерживаются.

Вы можете попытаться выполнить тесты с клиента, используя аннотацию @RunAsClient, а не контейнер, и это, скорее всего, будет успешным. Обратите внимание, что вам необходимо будет выполнить развертывание каким-либо образом без аннотированного метода @Deployment из-за вышеупомянутого отсутствия поддержки WAS 6 в Arquillian.

Если вы собираетесь использовать Ant вместо Maven, то единственным требованием является наличие всех зависимостей в пути к классам. К сожалению, нет никакого uber JAR или дистрибутива для Arquillian, поэтому на данный момент вам нужно знать все зависимости заранее.

Примечание - Строительство в поддержку WebSphere 6.0 для Arquillian не может быть тривиальным активность, по сравнению с другими, более поздними контейнеров:

  • Во-первых, должны быть предусмотрены средства для развертывания архива. Я не уверен, можно ли портировать механизм, используемый в поддержке контейнеров WebSphere 7 и 8.
  • Поддержка тестов в контейнерах в Аркиллиан для WAS 6.0 может потребовать поддержки протокола Servlet 2.4 для запуска тестов. В настоящее время Arquillian поддерживает Servlet Spec 2.5 и 3.0 для упаковки ServletTestRunner.Это, конечно, необходимо, если протокол JMX и сопровождающий JMXTestRunner не могут использоваться.

Или существуют лучшие альтернативы для интеграции тестирования устаревших корпоративных приложений Java?

Я обычно советую людям использовать сочетание Cargo и JUnit для functional testing унаследованных приложений, но даже Cargo не отображается для поддержки WebSphere 6.0.

Возможно, вы найдете JUnitEE, чтобы быть более подходящим для ваших нужд, если вы готовы упаковать JUnitEE TestRunner в свой архив; обратите внимание, что последний выпуск JUnitEE был в 2004 году, а mailing list немного неактивен, поэтому YMMV.

+0

Большое спасибо! На данный момент я собираюсь изучить JUnitEE и переоценить Arquillian, если/при обновлении до WSC 7.0. –

Смежные вопросы