使用Gradle执行单个JUnit5测试

问题描述:

我试图从Gradle只运行一个测试类。我使用这些命令:使用Gradle执行单个JUnit5测试

gradle -Dtest.single=Junit5Test test 
gradle test --tests ru.tests.runner.Junit5Test 

但它运行所有项目的测试。我只需要运行一个测试类。这是我的课程:

public class Junit5Test { 

     public static void main(String[] args) { 
     LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request() 
      .selectors(
       selectPackage("ru.tests.api") 
      ) 
      .build(); 

     Launcher launcher = LauncherFactory.create(); 
     launcher.execute(request, new TestExecutionListener()); 
     } 
    } 

它通过右键单击运行完美。我用

  • IntellijIDEA 2017年1月5日,
  • 摇篮,
  • junitPlatformVersion = '1.0.0-M6',
  • junitJupiterVersion = '5.0.0-M6'
+0

它看起来像你的一个测试替换

gradle -Dtest.single=Junit5Test test 

建立一个'Launcher'执行所有的测试解决它。所以如果你运行这个类,那么执行多个测试是有意义的。 – Nicolai

对于起动器,你的Junit5Test类是而不是一个“测试类”。

相反,它是一个独立的应用程序(即具有main()方法的Java类)。

因此,试图用Gradle执行它作为“测试”将永远不会工作。

如果要使用Gradle运行JUnit Jupiter测试(或任何其他在JUnit平台上运行的测试),则应使用JUnit Platform Gradle Plugin(这是指向JUnit 5用户指南相应部分的链接)。

+0

我面临着使用Gradle 4.4和Junit5/Jupiter的简单测试类的相同问题:--test测试选项被忽略,所有测试运行。这样说是否正确:在这种情况下,测试任务实际上被替换为:junitPlatformTest,由于后者没有--test选项,人们不应该怀疑它没有效果吗? – badbishop

+0

是的,这是正确的:'junitPlatformTest'与内置'test'任务完全不同。 –

+0

如果要配置通过junitPlatformTest任务运行哪些测试,则需要通过junitPlatform配置来配置选择器和/或过滤器,这在JUnit 5用户指南中有详细介绍。 –

我用

gradle -DjunitPlatformTest.single=Junit5Test test