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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:06:26