Cucumber运行报错:No back ends were found 求解决方案
解决Cucumber "No back ends were found" 异常
问题重现
运行Cucumber BDD框架时抛出以下异常:
Exception in thread "main" cucumber.runtime.CucumberException: No back ends were found. Please make sure you have a backend module on your CLASS PATH.
对应的Feature文件内容:
Feature: feature to test login scenario Scenario: Check login is successful with valid credentials Given User is on login page When User enters login and password And Clicks on login button Then User navigated to home page
核心原因与解决方案
1. 确认依赖完整性(Maven/Gradle通用)
Cucumber必须搭配对应语言的后端依赖,Java项目需确保包含cucumber-java/cucumber-java8,且所有Cucumber相关依赖版本统一,避免冲突:
Maven依赖示例:
<dependencies> <!-- Cucumber核心与JUnit适配依赖 --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.14.0</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.14.0</version> <scope>test</scope> </dependency> <!-- JUnit基础依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>
Gradle依赖示例:
testImplementation 'io.cucumber:cucumber-java:7.14.0' testImplementation 'io.cucumber:cucumber-junit:7.14.0' testImplementation 'junit:junit:4.13.2'
2. 检查步骤定义类的有效性
- 步骤定义类必须放在测试源码目录(如
src/test/java)下,每个步骤方法需用@Given/@When/@Then注解绑定Feature中的语句,示例:
import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; public class LoginSteps { @Given("User is on login page") public void user_is_on_login_page() { // 实现页面跳转逻辑 } @When("User enters login and password") public void user_enters_login_and_password() { // 实现输入账号密码逻辑 } @When("Clicks on login button") public void clicks_on_login_button() { // 实现点击登录按钮逻辑 } @Then("User navigated to home page") public void user_navigated_to_home_page() { // 实现首页断言逻辑 } }
- 确保注解内的字符串与Feature文件中的语句完全匹配(包括空格、大小写)。
3. 修正运行配置
- IDE运行时:确认运行配置的类路径包含所有测试依赖,主类选择
io.cucumber.core.cli.Main或JUnit运行器,且--glue参数指向步骤定义类所在的包(如com.yourpackage.steps)。 - 命令行运行时:确保
classpath包含测试类和依赖jar,示例:
java -cp "target/test-classes:target/classes:lib/*" io.cucumber.core.cli.Main --glue com.yourpackage.steps src/test/resources/features
4. 清理重建项目
执行清理构建命令,解决缓存或编译残留问题:
- Maven:
mvn clean test - Gradle:
./gradlew clean test
内容的提问来源于stack exchange,提问作者Sakhi
相关产品推荐
相关产品推荐

