我收到一个标题为“无法运行测试”的弹出窗口,并显示消息“未找到测试运行器'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错了?这里有什么问题?
答案 0 :(得分:7)
我在Eclipse Oxygen 4.7.1中遇到了同样的问题,尽管我的单元测试是用org.junit.jupiter
正确注释的。
我使用了Maven > Update Project
并选择了Update project configuration from pom.xml
,但即使我认为它会发现我在pom中有JUnit5依赖项这一事实也没有做任何事情。
我的解决方案:
Java Build Path
,选择Libraries
标签和Add Library
。JUnit
。JUnit5
。一旦添加,我就可以从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
方法)。因此,您必须找到一种替代方法来执行您的设置"代码。