'javax.ejb.embeddable.EJBContainer'에 해당되는 글 2

  1. 2011.12.08 [정리] Build, deploy, and test EJB components in just a few seconds
  2. 2011.12.06 EJB Test with EJBContainer of OpenEJB

[정리] Build, deploy, and test EJB components in just a few seconds

- http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-ejb.html

EJB 개발은 시간이 많이 걸리고 단위테스트도 쉽지 않다.
EJB 컨테이너에 배포해야만 실행시킬수 있는데 복잡하고 시간이 걸린다.

컨테이너에서 테스트를 돌리지 않고 테스트에서 컨테이너를 돌리자.

OpenEJB는 가볍고 EJB 명세를 잘 따른다. 기능에 충실하다.
OpenEJB, EJB 컴포넌트, JUnit테스트가 같은 JVM에서 돌아간다.

개발시에서는 내장 OpenEJB를 사용해서 빠르고 쉽게 테스트하고 통합테스트는 실제 사용되는 EJB 컨테이너에서 테스트하자.
=> EJB 3.1에서 제공하는 EJBContainer를 이용하면 EJB 컴포넌트를 배포하지 않고도 테스트할 수 있다.

XStream을 이용하면 테스트시 반복되는 입력을 XML로 처리할 수 있다.
=> XStream은 유용할거 같은데 반복되는 데이터를 자동으로 처리하는 방법은 좋은 방법이 더 많으니깐...

EJB Test with EJBContainer of OpenEJB

- http://openejb.apache.org/examples-trunk/simple-stateless/README.html


- OpenEJB 4.0.0-beta-1 사용
모든 라이브러리를 포함시킨다.[각주:1]
package org.superbiz.stateless.basic;

import javax.ejb.Stateless;

@Stateless
public class CalculatorBean {

    public int add(int a, int b) {
        return a + b;
    }
    ...

EJB 3.1에서 제공하는 EJBContainer를 이용해서 테스트한다. 
package org.superbiz.stateless.basic;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import javax.ejb.embeddable.EJBContainer;

import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {

    private CalculatorBean calculator;

    /**
     * Bootstrap the Embedded EJB Container
     *
     * @throws Exception
     */
    @Before public void setUp() throws Exception {

        EJBContainer ejbContainer = EJBContainer.createEJBContainer();
        Object object = ejbContainer.getContext().lookup("java:global/PROJECT_NAME/CalculatorBean");
        assertTrue(object instanceof CalculatorBean);
        calculator = (CalculatorBean) object;
    }

    /**
     * Test Add method
     */
    @Test public void testAdd() {

        assertEquals(10, calculator.add(4, 6));
    }
    ...

- EJBContainer를 BeforeClass에서 하는게 좋을듯. 속도차이가 10배 정도 차이가 난다.
  1. 의존 관계가 복잡하므로 이렇게 하는게 정신건강에 이롭다. [본문으로]