Eclipse继续说"没有测试运行JUnit 5"

时间:2018-05-01 15:24:53

标签: eclipse junit junit5

我正在使用Eclipse Oxygen.3 Release(4.7.3)。以下是我的JUnit测试类:

import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

class MyMathTest {
    MyMath myMath = new MyMath();

    @Before
    public void before() {
        System.out.println("Before");
    }

    @After
    public void after() {
        System.out.println("After");
    }

    @Test
    public void testSum_with3numbers() {
        System.out.println("Test1");
        int result = myMath.sum(new int[] {1,2,3});
        int expected = 6;
        assertEquals(expected, result);
    }

    @Test
    public void testSum_with1numbers() {
        System.out.println("Test2");
        int result = myMath.sum(new int[] {3});
        int expected = 3;
        assertEquals(expected, result);
    }

    @BeforeClass
    public static void beforeClass() {
        System.out.println("Before class");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("After class");
    }

}

当我运行这个Junit测试时,eclipse不断弹出对话框,告诉"没有测试跑步者和JUnit 5'" 的测试结果。为什么呢?

enter image description here

14 个答案:

答案 0 :(得分:5)

您的测试类目前基于JUnit 4,因为它使用org.junit包中的注释。

因此,要使其在Eclipse中作为JUnit 4测试类运行,您需要在“运行配置”中选择JUnit 4 Runner。单击绿色圆圈旁边的小箭头(指向下方),其中有一个白色箭头(位于Eclipse IDE的顶部)。在那里你应该看到你的测试类,并选择你可以在JUnit 4和JUnit 5跑步者之间切换。

另一方面,如果您的目标是使用JUnit Jupiter编写测试(即JUnit 5的编程模型),则需要从org.junit中的注释切换到org.junit.jupiter.api

答案 1 :(得分:1)

在Eclipse 2019-09(4.13)中,存在一个错误,该错误会导致“找不到使用测试运行器'JUnit 5'的测试”错误: https://bugs.eclipse.org/bugs/show_bug.cgi?id=551298

我在项目中添加了以下依赖项,它对我有用:

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-commons</artifactId>
    <version>1.5.2</version><!--$NO-MVN-MAN-VER$-->
    <scope>test</scope>
</dependency>

答案 2 :(得分:1)

这发生在我身上,因为我的测试方法被声明为私有,而JUnit无法检测到它。在我将其公开后,它可以正常工作,当然使用@Test批注。

答案 3 :(得分:1)

测试类不是公开的,应该公开,并且应该可以工作

答案 4 :(得分:1)

右键单击Java文件,然后选择:

构建路径->配置构建路径-> Java构建路径

在Java构建路径中选择选项卡,在右侧选项卡上选择添加库

选择 JUnit ,然后单击下一步

JUnit库版本下拉列表中选择 JUnit 5 ,然后单击完成

现在使用 Junit Test 运行测试,它将起作用。

此程序对我有用。

答案 5 :(得分:0)

您正在使用具有JUnit 5依赖项的JUnit 4批注。 如果要使用JUnit 5,则应替换:
“ @Before”和“ @BeforeEach”
“ @AfterEach”和“ @AfterEach”
“ @BeforeAll”和“ @BeforeAll”
'@AfterAll'与'@AfterAll'

有关JUnit 5注释https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations/

的更多信息

答案 6 :(得分:0)

回头看看您的导入。

您导入了import org.junit.Test;(用于JUnit 4的运行测试用例)

您需要导入import org.junit.jupiter.api.Test;才能使用JUnit5进行大写测试。

答案 7 :(得分:0)

在尝试了所有方法之后,我遇到了同样的错误,我意识到没有添加JUnit库。因此,添加后,测试可以按预期进行。

答案 8 :(得分:0)

右键单击并以-> config->身份运行并进行更改,然后运行它将为您加油!! enter image description here

答案 9 :(得分:0)

我的2美分:

右键单击项目->配置->添加模块信息->给出一些随机名称。 它应该自动在JUnit包中添加需求,如果没有,则手动添加:

requires org.junit.jupiter.api;

它将神奇地起作用!

*在Eclipse 2018-12上进行了测试

答案 10 :(得分:0)

我的问题是,运行正常,调试会引发此错误。

我之所以得到这个仅仅是因为系统内存不足。理想情况下,由于系统内存不足,eclipse无法启动调试会话。引发的错误消息令人困惑。

希望它对某人有帮助!

答案 11 :(得分:0)

在我目前的情况下,我在服务提供商一侧测试契约验证时遇到了此错误。由于Pact Broker没有针对服务提供商进行测试的契约而引发了该错误。

访问条约经纪人,并确保至少有一个条约可供测试。

答案 12 :(得分:0)

我在Eclipse(2020-09)非Maven项目中遇到了同样的问题。所提出的解决方案均无效,但是将编译器从9.0.4更改为15.0.1可以。

答案 13 :(得分:0)

添加 JUnit 老式依赖项为我解决了这个问题。

https://junit.org/junit5/docs/current/user-guide/#migrating-from-junit4-running

    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <scope>test</scope>
    </dependency>