Dav*_*eas 8 java spring intellij-idea spring-test junit5
如何在IntelliJ IDEA v2016.2.2中使用JUnit 5执行All Suite测试?
我得到运行此代码的Empty测试套件:
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 {
}
Run Code Online (Sandbox Code Playgroud)
我收到:
INFORMAZIONI: Discovered TestEngines with IDs: [junit-jupiter, junit-vintage]
Empty test suite.
Empty test suite.
[root]
JUnit Jupiter
JUnit Vintage
Run Code Online (Sandbox Code Playgroud)
要么
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 {
}
Run Code Online (Sandbox Code Playgroud)
我收到:
INFORMAZIONI: Discovered TestEngines with IDs: [junit-jupiter, junit-vintage]
Empty test suite.
[root]
|+--JUnit Vintage
| +--eu.....AllTests
|+--JUnit Jupiter
Run Code Online (Sandbox Code Playgroud)
我能够使用JUnit 4运行套件,但它不适用于JUnit 5.
Sam*_*nen 12
简答
如果您使用的是IntelliJ IDEA 2016.2,则目前无法执行@RunWith(JUnitPlatform.class)在IDE中注释的测试类.
答案很长
根据你报告的行为,经过一些艰苦的调查工作,我相信我有你的问题的答案......
如果您使用的是内置支持JUnit 5的IntelliJ IDEA 2016.2,那么以下是正在发生的事情.
LauncherAPI 启动JUnit平台,选择注释的测试类@RunWith(JUnitPlatform.class)(让我们称之为TestSuite).Launcher检测这两个junit-jupiter和junit-vintage TestEngine实现.TestSuite因为它在技术上不是JUnit Jupiter测试类.TestSuite因为它带有注释@RunWith(JUnitPlatform.class).TestSuite该类.非直观的部分是JUnit Vintage引擎忽略了TestSuite,因为它实际上看起来像一个基于JUnit 4的测试类,因为它带有注释@RunWith().忽略它的原因是避免无限递归,这在DefensiveAllDefaultPossibilitiesBuilder的源代码中有解释:
if ("org.junit.platform.runner.JUnitPlatform".equals(runnerClass.getName())) {
return null;
}
Run Code Online (Sandbox Code Playgroud)
上述代码null在这种情况下返回的事实导致空套件.
当然,如果用户被告知这种情况肯定会更好 - 例如,通过日志声明.因此,我为JUnit 5和IntelliJ打开了问题,以提高这种情况下的可用性.
从好的方面来说,由于您使用的是IntelliJ IDEA 2016.2,因此您无需使用测试套件支持.相反,您只需src/test/java在IDEA的项目视图中右键单击并选择Run 'All Tests',即可运行所有测试.
问候,
Sam (JUnit 5核心提交者)
| 归档时间: |
|
| 查看次数: |
13092 次 |
| 最近记录: |