Junit5测试ejb bean

时间:2017-05-23 12:43:54

标签: unit-testing ejb junit5

在Junit4中我使用OpenEJB

@RunWith(EJBContainerRunner.class)
public class MyEETestWithOneOpenEJB {
    @Inject
    private ACdiBean bean;

    @Test
    public void theTest() {
        // do test
    }
}

但是在Junit5中没有RunWith

如何使用junit5设置ejb?

2 个答案:

答案 0 :(得分:1)

您需要编写自己的EJBContainerExtension来替换Runner或找到已有的Runner。不幸的是,后者不太可能在这个时刻,JUnit5仍然不在GA中,并且还没有很多官方扩展。

If you want to, read about JUnit 5 extension model here

答案 1 :(得分:1)

即将发布的 TomEE 8(当前为 8.0.7-SNAPSHOT)将仅支持使用 JUnit 5 进行测试(没有对 JUnit 4 的暂时依赖)。

传统方式

旧版 EJBContainerRunner 已被相关的 JUnit 5 扩展取代。

如果您使用的是 Maven,则需要将以下依赖项添加到您的 pom 文件中:

    <dependency>
         <groupId>org.apache.tomee</groupId>
         <artifactId>openejb-junit5-backward</artifactId>
         <version>8.0.7-SNAPSHOT</version>
         <scope>test</scope>
     </dependency>

后续可以替换

@RunWith(EJBContainerRunner.class)

@RunWithEjbContainer

这是一个纯 JUnit 5 扩展。无需在类路径中添加任何 JUnit 4 依赖项。可以在 TomEE GitHub 存储库的 module's test source 中找到使用示例。

现代方式

在同一版本中,ApplicationComposer 得到增强以支持 JUnit 5 作为扩展。要使用它,请添加

    <dependency>
         <groupId>org.apache.tomee</groupId>
         <artifactId>openejb-junit5-backward</artifactId>
         <version>8.0.7-SNAPSHOT</version>
         <scope>test</scope>
     </dependency>

到您的类路径。 ApplicationComposer 不需要类路径扫描,并且比上述替代方案更快。

只需将 @RunWithApplicationComposer 添加到您的 JUnit 5 测试类。默认情况下,容器生命周期与测试实例的生命周期绑定。但是,也可以使用其他模式:

  • PER_EACH:为每个测试方法启动一个容器
  • PER_ALL:为每个测试类启动一个容器
  • PER_JVM:每个 JVM 启动一个容器
  • AUTO(默认):基于测试实例生命周期启动容器。

可以在 TomEE GitHub repository 的示例部分找到示例。