在Junit4中我使用OpenEJB
@RunWith(EJBContainerRunner.class)
public class MyEETestWithOneOpenEJB {
@Inject
private ACdiBean bean;
@Test
public void theTest() {
// do test
}
}
但是在Junit5中没有RunWith
如何使用junit5设置ejb?
答案 0 :(得分:1)
您需要编写自己的EJBContainerExtension来替换Runner或找到已有的Runner。不幸的是,后者不太可能在这个时刻,JUnit5仍然不在GA中,并且还没有很多官方扩展。
答案 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 的示例部分找到示例。