idea 运行java test_java – JUnit 5 – 使用JUnit Jupiter引擎时IntelliJ IDEA中的空测试套件...

简答

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

答案很长

根据你报告的行为,经过一些艰苦的调查工作,我相信我有你的问题的答案……

如果您使用的是内置支持JUnit 5的IntelliJ IDEA 2016.2,那么以下是正在发生的事情.

> IDEA通过Launcher API启动JUnit平台,选择使用@RunWith(JUnitPlatform.class)注释的测试类(让我们称之为TestSuite).

> Launcher检测到junit-jupiter和junit-vintage TestEngine实现.

> JUnit Jupiter引擎忽略了TestSuite,因为它在技术上不是JUnit Jupiter测试类.

> JUnit Vintage引擎也忽略了TestSuite,因为它是用@RunWith(JUnitPlatform.class)注释的.

>最终结果是,既没有注册的测试引擎声称它可以运行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的项目视图中右键单击src / test / java,然后选择Run’All Tests’,这将运行所有测试.

问候,

Sam(JUnit 5核心提交者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值