使用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'
对于起动器,你的Junit5Test
类是而不是一个“测试类”。
相反,它是一个独立的应用程序(即具有main()
方法的Java类)。
因此,试图用Gradle执行它作为“测试”将永远不会工作。
如果要使用Gradle运行JUnit Jupiter测试(或任何其他在JUnit平台上运行的测试),则应使用JUnit Platform Gradle Plugin(这是指向JUnit 5用户指南相应部分的链接)。
我面临着使用Gradle 4.4和Junit5/Jupiter的简单测试类的相同问题:--test测试选项被忽略,所有测试运行。这样说是否正确:在这种情况下,测试任务实际上被替换为:junitPlatformTest,由于后者没有--test选项,人们不应该怀疑它没有效果吗? – badbishop
是的,这是正确的:'junitPlatformTest'与内置'test'任务完全不同。 –
如果要配置通过junitPlatformTest任务运行哪些测试,则需要通过junitPlatform配置来配置选择器和/或过滤器,这在JUnit 5用户指南中有详细介绍。 –
我用
gradle -DjunitPlatformTest.single=Junit5Test test
它看起来像你的一个测试替换
建立一个'Launcher'执行所有的测试解决它。所以如果你运行这个类,那么执行多个测试是有意义的。 – Nicolai