문제

우리는 Maven과 함께 Ear & EJB 프로젝트를 구축하고 있습니다. 모든 EJB 프로젝트를 구축 한 다음 귀에 대한 종속성으로 사용되므로 결국 귀 파일에 포장됩니다.

문제는 각 EJB 프로젝트에 EJB를 확인하는 주니트 테스트가 있다는 것입니다. 현재 이러한 테스트는 Application Server (JBOSS)에 연결하고 EJB 인터페이스에서 메소드를 실행하려고 시도하기 때문에 그다지 유용하지 않습니다.

EJBS를 빌드하고 귀를 빌드 및 배포 한 다음 모든 EJBS에서 응용 프로그램 서버에 대해 모든 테스트를 실행할 수있는 방법이 있습니까?

지금은 시작 EJB- 구현 클래스 및 수동으로 "주입"주입 (somejbimpl.em = entityManager ....)을 통해 테스트에서 AP를 시뮬레이션하고 있습니다. 혼자의 거래.

Real AP에 대해 EJB 테스트를 실행하는 다른 방법이 있습니까? 이미 구축 된 EJB 모듈의 서브 세트가있는 각 EJB 모듈 후에 EAR을 배치 할 수 있습니까? 하지만 어떻게?

귀 테스트의 일부로 모든 EJB 모듈의 Maven 테스트를 실행하도록 설정 될 수 있습니까? 이 작업을 수행하는 방법?

도움이 되었습니까?

해결책

이것은 단순한 문제가 아니며 쉬운 답변이 없습니다. 바라건대이 포인터가 도움이 될 것입니다.

최선의 전략은 테스트를 진정한 단위 테스트로 분리하는 것입니다. 컨테이너없이 분리 할 수있는 테스트를하고 컨테이너가 필요한 테스트를 통합 테스트로 옮기는 것입니다.

당신이 사용할 수있는 ejb3Unit 컨테이너를 실행할 필요가없는 테스트를 최대화합니다. 복잡한 종속성을 조롱하는 데 도움이됩니다. EJB3Unit에는 Maven 플러그인이 있습니다 선적 서류 비치 Maven 저장소에 연결하는 자세한 내용.

JMock과 같은 다른 조롱 프레임 워크도 도움이 될 수 있습니다. 사용하는 경우 클래스뿐만 아니라 인터페이스를 조롱 할 수 있습니다. classimposteriser.

EJB 컨테이너가 필요한 테스트의 경우 다음과 같이 실행하도록 구성 할 수 있습니다. 통합 테스트, EJB 프로젝트 간의 관계에 따라 별도의 프로젝트로 옮기는 것이 합리적 일 수 있습니다.

출시 할 수 있습니다 주니트 테스트에 내장 된 부두 인스턴스 그리고 프로그래밍 방식으로 서블릿을 추가합니다. 물론 Jetty는 EJB 컨테이너가 아니므로 EJB 컨테이너가 필요합니다. openejb.

OpeneJB를 부두로 구성하려면 다음과 같은 구성을 사용하십시오.

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
    <scanIntervalSeconds>5</scanIntervalSeconds>
    <contextPath>/example</contextPath>
    <systemProperties>
      <systemProperty>
        <name>java.naming.factory.initial</name>
        <value>org.apache.openejb.client.LocalInitialContextFactory</value>
      </systemProperty>
      <systemProperty>
        <name>java.naming.factory.url.pkgs</name>
        <value>org.mortbay.naming</value>
      </systemProperty>
    </systemProperties>
  </configuration>
</plugin>

openejb에 대한 의존성 선언은 다음과 같습니다.

<dependency>
  <groupId>org.apache.openejb</groupId>
  <artifactId>openejb-core</artifactId>
  <version>3.1</version>
  <scope>test</scope>
</dependency>

당신은 또한 사용할 수 있습니다 셀렌 기능 테스트를 돕기 위해 (이 멀리 있다고 가정)는 다음과 같습니다. Selenium, Jetty 및 Openejb를 사용한 가이드 그렇게하려면.

다른 팁

Jboss의 경우 시도해 볼 수 있습니다 Maven Cargo 플러그인. 현재 JBoss 5.1로 테스트 중이며 여전히 작업 중입니다.

EJB 테스트를위한 완전한 Maven Cargo 플러그인 예제는 어디에서 찾을 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top