JUnit5测试与maven一起运行良好,但在Eclipse运行时没有,“测试运行器'JUnit 5'没有找到测试。”

时间:2018-01-22 19:14:00

标签: eclipse maven junit5

我收到一个标题为“无法运行测试”的弹出窗口,并显示消息“未找到测试运行器'JUnit 5'的测试。”当我尝试通过Run As > JUnit Test使用Eclipse运行JUnit 5测试时。

我有两个与测试相关的文件。一个是测试套件:

...

import org.junit.jupiter.api.BeforeAll;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
@SelectPackages("com.foo.stufftotest")

public class TestSuite {
    @BeforeAll
    public static void setup() {
        ...

另一个包含“实际”测试:

package com.foo.stufftotest;

import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

import com.foo.TestSuite;
import com.foo.business.mechanics.LogicStuff1;

public class BusinessTest {
    @Test
    public void testLogic1() {
        ...
    }

    @Test
    public void testLogic2() {
        ...
    }

    ...

所有testLogicN()方法都取决于TestSuite.setup()中完成的设置内容。如果setup()没有运行,则会有很多空值,并且事情失败也就不足为奇了。当我尝试从项目的上下文菜单中运行JUnit时,所有测试都会被触发,它们都会失败;套房似乎没有得到承认。当我尝试从TestSuite.java的上下文菜单中专门运行JUnit时,我最终得到了我在问题顶部提到的错误。

但是,当我在项目上运行maven test时,套件 正确触发,所有测试都通过。因此,代码本身似乎不是问题。

我不记得在JUnit 4中遇到过这个问题,尽管我从未在这个特定项目中使用过JUnit 4。

我使用Eclipse是错误的,还是我使用JUnit5错了?这里有什么问题?

2 个答案:

答案 0 :(得分:7)

我在Eclipse Oxygen 4.7.1中遇到了同样的问题,尽管我的单元测试是用org.junit.jupiter正确注释的。

我使用了Maven > Update Project并选择了Update project configuration from pom.xml,但即使我认为它会发现我在pom中有JUnit5依赖项这一事实也没有做任何事情。

我的解决方案:

  1. 打开Java Build Path,选择Libraries标签和Add Library
  2. 选择JUnit
  3. 为JUnit库版本选择JUnit5
  4. 一旦添加,我就可以从Eclipse手动执行测试。但是我仍然不确定为什么不自动添加它。

答案 1 :(得分:2)

  

我得到一个带标题&#34的弹出窗口;无法运行测试"和消息"没有测试跑步者和JUnit 5'。"。当我尝试通过Run As > JUnit Test使用Eclipse运行JUnit 5测试时。

那是因为TestSuite实际上不是JUnit 5测试类。由于它是用@RunWith注释的(来自JUnit 4),因此它是一个JUnit 4测试类。要避免Eclipse中的弹出窗口,只需单击"运行配置"并选择JUnit 4而不是JUnit 5来运行测试类。

您遇到的另一个问题是@BeforeAll是来自JUnit Jupiter的注释。因此,在使用@RunWith(JUnitPlatform.class)注释的类中根本不支持它(除非该类恰好包含JUnit Jupiter的@Test方法)。因此,您必须找到一种替代方法来执行您的设置"代码。