gpt4 book ai didi

java - JUnit 5 - 使用 JUnit Jupiter 引擎时 IntelliJ IDEA 中的空测试套件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:39:48 26 4
gpt4 key购买 nike

如何在 IntelliJ IDEA v2016.2.2 中使用 JUnit 5 执行 All Suite 测试?

我得到空测试套件运行这段代码:

import org.junit.platform.runner.IncludeEngines;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.runner.SelectPackages;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
@IncludeEngines("junit-jupiter")
@SelectPackages("<eu...package>") //I confirm that <eu...package> is ok.
public class AllTests {
}

我收到:

INFORMAZIONI: Discovered TestEngines with IDs: [junit-jupiter, junit-vintage]
Empty test suite.
Empty test suite.

[root]
JUnit Jupiter
JUnit Vintage

import eu.....services.ServiceTest;
import eu.....repository.DAOTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({
ServiceTest.class,
DAOTest.class
})
public class AllTests {
}

我收到:

INFORMAZIONI: Discovered TestEngines with IDs: [junit-jupiter, junit-vintage]
Empty test suite.

[root]
|+--JUnit Vintage
| +--eu.....AllTests
|+--JUnit Jupiter

我能够使用 JUnit 4 运行套件,但它不适用于 JUnit 5。

最佳答案

简答题

如果您使用的是 IntelliJ IDEA 2016.2,目前无法在 IDE 中执行带有 @RunWith(JUnitPlatform.class) 注释的测试类。

长答案

根据您报告的行为,经过一番艰苦的调查工作,我相信我已经找到了您问题的答案...

如果您使用的是内置 JUnit 5 支持的 IntelliJ IDEA 2016.2,那么会发生以下情况。

  1. IDEA 通过 Launcher API 启动 JUnit Platform,选择用 @RunWith(JUnitPlatform.class) 注释的测试类(我们称之为 TestSuite).
  2. Launcher 检测 junit-jupiterjunit-vintage TestEngine 实现。
  3. JUnit Jupiter 引擎忽略 TestSuite,因为它在技术上不是 JUnit Jupiter 测试类。
  4. JUnit Vintage 引擎也会忽略 TestSuite,因为它带有 @RunWith(JUnitPlatform.class) 注释。
  5. 最终结果是注册的测试引擎都没有声称它可以运行 TestSuite 类。

不直观的部分是 JUnit Vintage 引擎忽略了 TestSuite,而实际上它看起来像一个基于 JUnit 4 的测试类,因为它用 @RunWith() 注释>。忽略它的原因是为了避免无限递归,这在DefensiveAllDefaultPossibilitiesBuilder的源代码中有解释。 :

if ("org.junit.platform.runner.JUnitPlatform".equals(runnerClass.getName())) {
return null;
}

上述代码在这种情况下返回 null 的事实导致空套件

当然,如果用户知道这种情况当然会更好——例如,通过日志语句。因此,我为 JUnit 5 都打开了问题和 IntelliJ以提高此类场景中的可用性。

从好的方面来说,由于您使用的是 IntelliJ IDEA 2016.2,因此无需使用测试套件支持。相反,您只需在 IDEA 的项目 View 中右键单击 src/test/java 并选择 Run 'All Tests',这将运行您的所有测试。

问候,

Sam (JUnit 5 核心提交者)

关于java - JUnit 5 - 使用 JUnit Jupiter 引擎时 IntelliJ IDEA 中的空测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com