2

在 JUnit 4 中,我使用以下设置来测试我的 EJB bean:

@RunWith(EJBContainerRunner.class)
public class MyEETestWithOneOpenEJB {
    @Inject
    private ACdiBean bean;
 
    @Test
    public void theTest() {
        // do test
    }
}

但在 JUnit 5 中,@RunWith(...)不再存在。

问题:如何使用 JUnit 5 进行测试?

4

2 回答 2

1

您将需要编写自己的 EJBContainerExtension 来替换 Runner 或找到一个已经存在的。不幸的是,后者目前不太可能,JUnit5 还没有进入 GA 并且还没有很多官方扩展。

如果您愿意,请在此处阅读有关 JUnit 5 扩展模型的信息

于 2017-05-23T13:11:17.000 回答
1

TomEE 8(自 8.0.7 起)仅支持使用 JUnit 5 进行测试(没有对 JUnit 4 的暂时依赖)。

传统方式

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

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

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

随后,您可以更换

@RunWith(EJBContainerRunner.class)

@RunWithEjbContainer

这是一个纯粹的 JUnit 5 扩展。无需将任何 JUnit 4 依赖项添加到您的类路径中。可以在 TomEE GitHub 存储库的模块测试源中找到使用示例。

现代方式

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

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

到你的类路径。ApplicationComposer不需要类路径扫描,并且比上面提到的替代方法更快。

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

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

可以在TomEE GitHub 存储库的示例部分找到一个示例。

于 2021-03-24T16:29:22.920 回答