2014-06-19 2 views
3

EJB 모듈 및 Arquillian의 임베디드 단위 테스트를 위해 Java EE 6에서 제공하는 EJBContainer 클래스 간의 차이점을 이해하려고합니다.Arquillian 대 EJB 임베디드 컨테이너

좋은 자료가 있습니까? 아니면 누군가 이해할 수 있습니까? 임베디드 컨테이너를 사용하여 EJB를 테스트 할 수있을 때 Arquillian 테스트를 작성하는 것이 가치가 있습니까?

+0

문법 Arjan을 업데이트 해 주셔서 감사합니다. 당신이 도울 수있는 대답이 있습니까? – YogendraJ

+1

'EJBContainer'는 EJB에만 적용됩니다. 애플리케이션이 GlassFish에서 실행된다고 가정 해 봅시다. 어떻게 'EJBContainer'를 얻을 수 있습니까? REST 엔드 포인트 나 JSF 컨트롤러와 같은 것을 어떻게 테스트 할 것인가? Arquillian은 EJB를 테스트하는 것 이상의 완벽한 스펙트럼입니다. 어쩌면 더 많은 유스 케이스를 제공한다면 대답하기가 더 쉬울 것입니다. –

답변

4

전체 공개를 찾을 수 있습니다 : 나는 Arquillian

Arquillian의 기여가 integration testing을위한 컴포넌트 모델입니다.

EJBContainer을 사용하면 runtime(the container in this case) in your tests을 가져올 수 있습니다. 테스트에 런타임을 가져 오면 add configuration complexity이됩니다. Arquillian은 opposite philosophy에 세워졌습니다. Arquillian은 그 반대의 일을합니다. brings your test to the runtime이므로 eliminates the testing bandgap (단위가 통합 테스트로 옮겨가는 동안 복잡함이 있습니다).

위에서 언급 한 차이점을 아래 예제에서 알 수 있습니다. 난이 도움이되기를 바랍니다

public class EJBContainerGreeterTest { 

    private static EJBContainer ejbContainer; 
    private static Context ctx; 

    @BeforeClass 
    public static void setUpClass() throws Exception { 
     ejbContainer = EJBContainer.createEJBContainer(); 
     ctx = ejbContainer.getContext(); 
    } 

    @AfterClass 
    public static void tearDownClass() throws Exception { 
     if (ejbContainer != null) { 
      ejbContainer.close(); 
     } 
    } 

    @Test 
    public void testGreeting() { 
     Greeter greeter = (Greeter) 
       ctx.lookup("java:global/classes/Greeter"); 

     assertNotNull(greeter); 
     assertEquals("Welcome to the Arquillian Universe :)", greeter.greet()) ; 
    } 
} 

:

테스트 Arquillian를 사용하여 EJB는 : 같은

@RunWith(Arquillian.class) 
public class ArquillianGreeterTest { 

    @Deployment 
    public static JavaArchive createTestArchive() { 
     return ShrinbkWrap.create("greeterTest.jar", JavaArchive.class) 
      .addClasses(Greeter.class) 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 
    } 

    @EJB private Greeter greeter; 

    @Test 
    public void testGreeting() { 
     assertNotNull(greeter); 
     assertEquals("Welcome to the Arquillian Universe :)", greeter.greet()); 
    } 

} 

EJBContainer를 사용하여 같은 예를 들어, 보일 것이다.

2

Arquillian은 결국 이러한 아이디어를 바탕으로 구축됩니다. 엔진이없는 빈 자리 표시 자, 자동차라고 생각하십시오. 그러나 GlassFishEngine, Jboss Engine, Websphere Engine과 같이 다른 엔진을 사용할 수 있습니다. 따라서 arquillian을 사용하고, 원하는 엔진을 정의하고, 테스트 할 코드를 승객으로 지정하고, 승용차를 놓습니다.

Arquillian과 관련된 초보자를위한 일련의 게시물을 다시 작성하여 귀하의 질문과 관련된 첫 번째 섹션을 찾으십시오. 여기 here

+0

귀하의 블로그는 저에게 도움이되었습니다, 감사합니다 javapapo! – YogendraJ

+0

도와 드리겠습니다 :) – javapapo