如何在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 {
}

我收到:

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,那么以下是正在发生的事情.

> 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核心提交者)

java – JUnit 5 – 使用JUnit Jupiter引擎时IntelliJ IDEA中的空测试套件的更多相关文章

  1. 适用于Xcode,IntelliJ Idea和Phonegap(又名Cordova)的gitignore模板

    有没有人有一个很好的预先推出的gitignore文件用于使用Xcode和PhoneGap的iPhone开发?

  2. 第四章 :构建你的应用程序原型

    在应用程序开发的环境下,原型可以是一个app的早期样品,这个样品没有什么功能只有一些用户界面甚至只有草图。原型可以允许你在不构建应用程序的情况下测试你的idea。下图展示原型的好处将应用程序的草图画在纸上现在你有一个idea,怎么构建原型呢?使用POP构建你的应用程序prototype你可以把你的app话在纸上。如前所述,应用程序原型有很多形式。

  3. Android studio – Faild to resolve:com.android.support:design:26.0.1错误

    我有一个错误叫:我的androidstudio版本是3.0beta1.我的gradle文件如下:我想把“设计”放到我的项目中,但我不能这样做.我该怎么做?解决方法尝试改变和或者不要更改为bulidToolsversion更改依赖项

  4. android-studio – IDEA中Gradle自动完成的位置在哪里?

    解决方法对于Groovy插件,它可能是Cucumber.我知道Gradle使用Groovy的一些技术和语法,所以我尝试在第一次尝试时安装一些Groovy插件并取得成功.安装此插件的步骤:>在MacOS上:首选项…

  5. Android单元测试的正确方法

    我知道这对所有Android开发者来说都是一个乏味的话题.但究竟什么是Android测试的正确方法?解决方法这个问题和我的回答,与Android没有任何关系,但这是一件好事.我略微修改了你的假设,但原理是一样的.>70%单元测试>20%集成测试>10%UI测试应该是70%吗?最后,检查您的UI是否按预期工作.你在这个级别显示什么并不重要.只要在用户未登录您的罚款时显示登录屏幕.这通常被称为TestPyramid,是你所描述的,只是减去了明显的比例.

  6. android – 使用Robolectric测试ActionBarActivity时出错

    我正在使用Robolectric来测试我的应用程序中的活动.该活动扩展了ActionBaractivity.当我测试活动时,我得到错误:“IllegalStateException:你需要在这个活动中使用Theme.AppCompat主题(或后代).”我的测试环境是:AndroidStudio0.8.6,Robolectric2.4-SNAPSHOT,support-v4库版本20.0,appco

  7. android.test.AndroidTestCase中的方法setUp没有被模拟

    notmocked’错误,并建议将以下内容放入build.gradle:这可以在从命令行启动时运行测试但是当我使用rightclick从AndroidStudio运行测试类时–>跑.这样,我又得到了同样的错误:关于如何解决这个问题的任何想法?

  8. android-studio – 在Android Studio中放置gitIgnore文件的位置?

    我将此文件复制到AndroidStudio中的gitIgnore文件中,但是当我在gitHub上推送该项目时,我的gitnigore文件如下所示:所以,我复制到AndroidStudio的文件不在这里.问题是什么?解决方法通常在创建新项目时会为您生成gitignore文件.这是正确的.gitignore文件.这是你必须把它.

  9. Android Studio中的Gradle Error:找不到ID为’com.android.library’的插件

    当我尝试在AndroidStudio中构建Android库项目时,我收到以下Gradle错误:我对Gradle很新,这对我来说很困惑.为什么会这样?build.gradle文件如下:解决方法您的问题是您使用的顶级文件无法使用此类插件.在AS中你有这样的结构:在您的顶级文件中,您可以使用:在lib/build.gradle中,您可以使用问题中发布的代码:最后在您的settings.gradle中你也可以参考thisquestion.

  10. android – Espresso – 点击对话框的按钮

    我想测试Android6的权限,但我找不到使用Espresso点击“允许”按钮的方法.有没有办法做到这一点?

随机推荐

  1. 适用于Xcode,IntelliJ Idea和Phonegap(又名Cordova)的gitignore模板

    有没有人有一个很好的预先推出的gitignore文件用于使用Xcode和PhoneGap的iPhone开发?

  2. swift – 不可用:对于混合型算术,请使用显式类型转换或Strideable方法

    我正在尝试学习Swift,并且正在研究一个在Swift2中工作的旧的Generic示例现在在Swift4中它抱怨道有人可以解释为什么我收到这个错误以及我做错了什么?

  3. android-studio – IDEA中Gradle自动完成的位置在哪里?

    解决方法对于Groovy插件,它可能是Cucumber.我知道Gradle使用Groovy的一些技术和语法,所以我尝试在第一次尝试时安装一些Groovy插件并取得成功.安装此插件的步骤:>在MacOS上:首选项…

  4. android – IntelliJ IDEA认为我的项目的一部分是subversion而不是git,如何解决这个问题?

    解决方法在“设置”中检查项目配置>版本控制.这是配置目录/vcs映射的位置.删除可能存在的任何SVN映射,并确保整个项目映射到Git.顺便说一句,我不知道这怎么可能发生.

  5. Android Studio在启动时修改./idea/vcs.xml

    因为不建议忽略AndroidStudio中的整个.idea文件夹,所以大多数文件都由git跟踪.然而奇怪的是,每次启动后,即使已经存在数十个,也会向vcs.xml添加相同的行.这很快变老了.这种行为是有目的还是仅仅是一个错误?AndroidStudio还可以在启动时阻止它进行此类修改吗?

  6. android – 如何使用IntelliJ IDEA正确配置AdMob?

    我正在尝试将AdMob合并到我的Android应用程序中.我正在使用IntelliJIDEA进行开发,我似乎无法正确设置我的项目.此时我已完成以下操作:>是否需要下载AdMobSDK所需的所有初步步骤.>按照指示here,试图为IntelliJIDEA增加它们.我已将AdMobSDK的单入口模块库依赖项添加到我的项目中.如果我尝试在代码中使用它,IDE看起来像是没有问题识别SDK中的类.但是,它无

  7. android-studio – Android Studio / IntelliJ IDEA编辑器中的中心代码

    我想将我的代码集中在AndroidStudio的/Intellij编辑器中,就像在distractionFree模式下完成一样.现在如果它始终在编辑器的左侧对齐,但我想将它放在窗口的中心.我在设置中找不到任何选项.这可以在不进入无牵引模式的情况下实现吗?

  8. Android图书馆项目Jar IntelliJ IDEA 11

    我正在使用IntelliJIDEA11.如何为我的Android图书馆项目创建一个JAR文件?我有一个相同的Android库项目及其JAR文件.我已经设法从模块设置–>项目设置–>Artifacs->创建一个JAR文件.我试图将我的Jar文件与原始文件进行比较,内容不同.是否可以确认我的程序是否正确?解决方法您可以按照这个link1创建jar来防止这样做.如果您在遵循以前的链接时遇到问题,请遵守此link2

  9. 在Android Studio中的Javadoc中的intellij-idea – 标签

    如果我在AndroidStudio和其他Jetbrains产品中重新格式化代码,那么在某些地方创建了一个小标签.我该如何防范?解决方法标签在空行上生成,以便它们显示在javadoc中.如果你想,你可以在重新格式化代码时关闭它.在AndroidStudio中,转到文件–>设置–>代码样式–>Java–>JavaDoc选项卡–>取消选中生成“”空线这里是文档的样式,没有段落标签,右边是快速文档窗口中的文本.只要考虑到这一点.

  10. android – 强制Idea生成R.Java文件的最简单的方法是什么?

    我试图使用intellij想法运行Android示例应用程序,而R.Java文件缺少表单记事本样本源目录.解决方法确保您的项目根目录中有gen文件夹.如果没有,请自己做一个.

返回
顶部