2011-12-05 5 views
4

저는 최근에 대규모의 레거시 엔터프라이즈 Java 애플리케이션으로 작업하기 시작했습니다. 주로 Websphere Commerce 6을 기반으로합니다. EJB 1.x 및 2.x와 Commerce API에 직접 연결되는 많은 코드가 포함되어 있습니다.Arquillian으로 레거시 Java EE 애플리케이션 통합 테스트

필자는 의존성을 없애고 조심스럽게 코드의 작은 부분을 리팩터링하는 동안 첫 번째 단위 테스트를 도입했습니다. 우리는 통합 테스팅 프레임 워크를 사용하여 테스트를 어렵게 만들고 시간을 많이 소비하는 프로세스를 만드는 아이디어를 모색했습니다.

Arquillian은 통합 테스트를위한 매우 좋은 옵션으로 제안되었습니다. 그러나 더 현대적인 응용 프로그램을 지향합니다. 대부분의 예제는 Java EE 5+ 및 Maven을 사용합니다. 우리는 J2EE와 Ant를 사용하고 있습니다. 우리는 현재 Java 1.4에 묶여 있으며 Java 5로 이동할 수도 있지만 곧 EJB 3.x로 업그레이드하지 않을 것입니다. 우리는 또한 Ant를 고집 할 가능성이 있습니다.

이러한 제약 사항을 염두에두고 Arquillian을 사용할 수 있습니까? 또는 레거시 엔터프라이즈 Java 응용 프로그램 통합 테스트를위한 더 나은 대안이 있습니까?

답변

4

Arquillian은 통합 테스트를위한 매우 좋은 옵션으로 제안되었습니다. 그러나 더 현대적인 응용 프로그램을 지향합니다. 대부분의 예제는 Java EE 5+ 및 Maven을 사용합니다. 우리는 J2EE와 Ant를 사용하고 있습니다. 우리는 현재 Java 1.4에 묶여 있으며 Java 5로 이동할 수도 있지만 곧 EJB 3.x로 업그레이드하지 않을 것입니다. 우리는 또한 Ant를 고집 할 가능성이 있습니다.

이러한 제약 사항을 염두에두고 Arquillian을 사용할 수 있습니까?

참고 : 저는 Arquillian 기고가입니다. 나는 내 대답에 편견이 없도록 노력했다.

이것은 실제로 테스트가 어떻게 실행되는지에 달려 있습니다. 컨테이너 내 테스트에 대한 Arquillian의 지원을 사용하려는 경우 솔루션을 찾지 못할 수 있습니다. WebSphere Commerce 6은 WebSphere 6.0을 기본 컨테이너로 사용하며, 현재 Arquillian에서는 지원하지 않습니다. WAS 7.0 또는 8.0을 기초로 WebSphere Commerce 버전을 가상으로 사용할 수있는 경우,이 A 테이너가 지원되기 때문에 대부분의 내 응답을 무시할 수 있습니다.

컨테이너 대신 @RunAsClient 주석을 사용하여 클라이언트에서 테스트를 실행할 수 있으며 성공할 가능성이 큽니다. Arquillian의 WAS 6에 대한 지원 부재로 인해 @Deployment 주석이 달린 메소드 없이는 어떤 방식 으로든 배치를 수행해야한다.

Maven 대신 Ant를 사용하려면 모든 종속성이 클래스 경로에 있어야합니다. 아쉽게도 Arquillian에 대한 uber JAR 또는 배포판이 없기 때문에 현재 모든 종속 관계를 미리 알아야합니다.

주 - Arquillian 용 WebSphere 6.0을 지원하는 건물의 다른 최근의 용기에 비해, 사소한 활동을하지 않을 수 있습니다 :

  • 첫째, 아카이브를 배포하기위한 수단이있을 수 있습니다. WebSphere 7 및 8 컨테이너 지원에 사용 된 메커니즘을 이식 할 수 있는지 확실하지 않습니다.
  • Arquillian for WAS 6.0의 컨테이너 내 테스트를 지원하려면 테스트 실행을 위해 Servlet 2.4 프로토콜을 지원해야 할 수 있습니다. 현재 Arquillian은 ServletTestRunner를 패키징하기 위해 Servlet Spec 2.5 및 3.0을 지원합니다.이것은 물론 JMX 프로토콜과 함께 제공되는 JMXTestRunner를 사용할 수없는 경우 필요합니다.

레거시 엔터프라이즈 Java 응용 프로그램의 통합 테스트를 위해 더 좋은 대안이 있습니까?

나는 일반적으로 functional testing 기존 응용 프로그램에 대한 Cargo의 믹스와의 JUnit을 사용하는 사람들에게 조언 것이지만, 심지어화물에서는 WebSphere 6.0을 지원하지 않는 것 같습니다.

아카이브에 JUnitEE TestRunner를 패키징하려는 경우 JUnitEE이 필요에 더 적합 할 수 있습니다. JUnitEE의 마지막 릴리스는 2004 년이었고 mailing list은 약간 비활성 상태이므로 YMMV입니다.

+0

대단히 감사합니다. JUnitEE를 당분간 살펴보고 WSC 7.0으로 업그레이드 할 때 Arquillian을 다시 평가할 것입니다. –

관련 문제