В OpenEJB есть некоторая поддержка, которая может оказаться полезной в сочетании с имитацией.
В качестве альтернативы EJB 3.0 Embedded EJBContainer API вы можете просто собрать свое приложение в коде.
import junit.framework.TestCase;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.StatelessBean;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.junit.Module;
import org.junit.Test;
import org.junit.runner.RunWith;
import javax.ejb.EJB;
@RunWith(ApplicationComposer.class)
public class ProcessorBeanTest extends TestCase {
@EJB
private ProcessorBean processorBean;
@Module
public EjbJar beans() {
EjbJar ejbJar = new EjbJar();
ejbJar.addEnterpriseBean(new StatelessBean(ProcessorBean.class));
ejbJar.addEnterpriseBean(new StatelessBean(MockDao.class));
return ejbJar;
}
@Test
public void test() throws Exception {
// use your processorBean
}
}
Здесь мы видим тестовый сценарий, запускаемый ApplicationComposer
.Это простая оболочка для тестировщика JUnit, которая ищет @Module
методы, которые можно использовать для определения вашего приложения.
Это то, как OpenEJB проводил все свои внутренние тесты годами, и мы решили это сделать.открыть в последних выпусках (начиная с 3.1.3).Он выходит за рамки мощного и чрезвычайно быстрого, поскольку исключает сканирование пути к классам и некоторые более тяжелые части развертывания.
Зависимости maven могут выглядеть так:
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0-3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<!--
The <scope>test</scope> guarantees that none of your runtime
code is dependent on any OpenEJB classes.
-->
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
<version>4.0.0-beta-1</version>
<scope>test</scope>
</dependency>
</dependencies>