You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:12:51