类型不匹配 junit5 @ExtendWith

问题描述

所以这可能是一个非常愚蠢的问题,但我刚刚开始将一个项目从 junit 4 迁移到 5,发现 @RunWith() 不再存在。它被@ExtendWith 取代。所以我试着这样做:

import org.jboss.arquillian.junit.Arquillian;
import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.displayName;
import org.junit.jupiter.api.extension.ExtendWith;

import de.msggillardon.services.journal.JournalService;
import de.msggillardon.system.UserContext;
import de.msggillardon.util.ITDeployment;

@ExtendWith(Arquillian.class)
.....

我得到以下异常:“类型不匹配:无法从类转换为类扩展扩展>

我是一个真正的初学者,不知道如何解决问题。所以也许有人可以帮助我或告诉我在哪里可以找到必要的信息。

谢谢大家。

解决方法

遗憾的是,您不能使用 JUnit 4 的 Runner 作为 JUnit Jupiter(JUnit 5 的一部分)扩展。这是一个全新的 API,不兼容。

虽然 JUnit Jupiter 编程模型和扩展模型将 本身不支持 JUnit 4 特性,例如 Rules 和 Runners,它是 预计源代码维护者不需要更新所有 他们现有的测试、测试扩展和自定义构建测试 迁移到 JUnit Jupiter 的基础设施。从official JUnit documentation

因此,对于每个 @RunWith,您都需要使用/包含 JUnit Jupiter 扩展。在您使用 Arquilian 的特殊情况下,我不太确定是否已经有一个官方扩展。

以下链接可能会有所帮助: