gpt4 book ai didi

对注入(inject)了另一个 ejb 的 ejb3.0 进行单元测试

转载 作者:行者123 更新时间:2023-12-04 20:19:07 29 4
gpt4 key购买 nike

如何对 ProcessorBean 进行单元测试?
由于我只想测试 ProcessorBean 而不是 Dao,因此我需要对 Dao 进行 stub 或模拟,但我不知道如何使用 Junit 做到这一点。

我正在使用 Junit4 和 Ejb3.0

@Stateless
public class ProcessorBean {

@EJB
private Dao dao;

public void process() {
//logic to be tested
}
}

最佳答案

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 运行的测试用例.它是用于查找 @Module 的 JUnit 测试运行器的简单包装器。可用于定义您的应用程序的方法。

这实际上是 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>

关于对注入(inject)了另一个 ejb 的 ejb3.0 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713945/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com