【发布时间】:2018-01-22 19:13:59
【问题描述】:
我收到一个弹出窗口,标题为“无法运行测试”和消息“没有使用测试运行程序 '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() 没有运行,就会有很多空值,事情失败也就不足为奇了。当我尝试从 project 的上下文菜单中运行 JUnit 时,所有的测试都被触发并且它们都失败了;该套件似乎没有被识别。当我尝试从TestSuite.java 的上下文菜单中专门运行 JUnit 时,我得到了我在问题顶部提到的错误。
但是,当我在项目上运行maven test 时,套件被正确触发,并且所有测试都通过了。因此,代码本身似乎不是问题。
我不记得 JUnit 4 有这个问题,尽管我从未在这个特定项目中使用过 JUnit 4。
是我用错了 Eclipse,还是用错了 JUnit5?这里有什么解决办法?
【问题讨论】:
-
课堂上
BusinessTest:你导入了什么@Test? JUnit 4 还是 5?在 Eclipse 中启动此类时会发生什么? -
我正在使用 JUnit5
@Test;我已经编辑以显示这一点。当我直接启动测试用例文件时,我会遇到所有失败,这是预期的行为,因为测试依赖于套件文件中发生的设置。 -
当您选择“JUnit 4 Runner”时,Eclipse 是否执行测试?您的
TestSuite看起来像 JUnit 4 类。 -
嗯,好的。我打算编写 JUnit5 测试,但出于诊断目的值得一试。我只是尝试明确强制它与 JUnit 4 运行器一起运行。我没有收到“未找到测试”错误,但我确实收到了由于套件方法未触发而导致的 all-tests-failed-due-to-null-values 情况。