Junit5 Launcher无法识别Cucumber测试的问题求助
问题
尝试使用Cucumber Junit Platform引擎运行Cucumber测试,但没有任何测试被执行。所有测试文件均放置在resources/features目录下。已编写RunCucumberTest.java类:
@Suite @IncludeEngines("cucumber") @SelectClasspathResource("features") @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty") @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "com.integrationtest.steps") @IntegrationTest public class RunCucumberTest { }
运行测试的代码如下:
final LauncherDiscoveryRequest request = request().selectors(selectDirectory("features")) .build(); final Launcher launcher = LauncherFactory.create(); final TestPlan testPlan = launcher.discover(request); logFoundTests(testPlan); final SummaryGeneratingListener summaryListener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(summaryListener); launcher.execute(request); summaryListener.getSummary().printTo(new PrintWriter(System.out));
控制台输出显示:
Test run finished after 56 ms [ 1 containers found ] [ 0 containers skipped ] [ 1 containers started ] [ 0 containers aborted ] [ 1 containers successful ] [ 0 containers failed ] [ 0 tests found ] [ 0 tests skipped ] [ 0 tests started ] [ 0 tests aborted ] [ 0 tests successful ] [ 0 tests failed ]
但在IntelliJ中,无论是直接运行feature文件还是RunCucumberTest.java,测试都能正常执行。请问遗漏了什么配置?
解决方法
问题根源:手动构建的
LauncherDiscoveryRequest仅指定了selectDirectory("features"),JUnit Platform无法识别需要用Cucumber引擎解析这些feature文件,也未传递Cucumber必需的glue、插件等配置参数。而IntelliJ运行时会自动读取RunCucumberTest类上的注解配置,因此能正常执行测试。修正方案1:直接选择测试类
将LauncherDiscoveryRequest改为选择RunCucumberTest类,复用已有的注解配置,无需手动重复设置参数:final LauncherDiscoveryRequest request = request() .selectors(selectClass(RunCucumberTest.class)) .build();修正方案2:手动配置Cucumber引擎和参数
若坚持通过目录选择feature文件,需手动指定Cucumber引擎并添加必要配置参数,同时确保目录路径准确:final LauncherDiscoveryRequest request = request() .selectors(selectDirectory("src/main/resources/features")) // 根据项目结构调整路径 .includeEngines("cucumber") .configurationParameter(GLUE_PROPERTY_NAME, "com.integrationtest.steps") .configurationParameter(PLUGIN_PROPERTY_NAME, "pretty") .build();
内容的提问来源于stack exchange,提问作者Pablo Fradua
相关产品推荐
相关产品推荐

