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

执行Cucumber测试时遭遇包不存在错误,如何解决?

问题:Cucumber测试编译报错但Maven命令执行无失败

报错信息

  • java: package io.cucumber.junit does not exist
  • java: package org.junit.runner does not exist
  • java: cannot find symbol(symbol: class RunWith、symbol: class CucumberOptions)

项目配置文件 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>SeleniumProject</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>7.2.3</version>
            <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
     </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
           <configuration>
            <source>1.8</source>
            <target>1.8</target>
                <includes>
                    <include>src/test/java</include>
                </includes>
          </configuration>
       </plugin>
    </plugins>
</build>
</project>

测试运行类代码

package runner; 

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith; 

@RunWith(Cucumber.class)
@CucumberOptions( 
        plugin = {},
        features = "src/test/resources/features",
        tags = "~@ignore",
        glue = {"steps"}
)

public class RunCucumberTest {
}

已执行操作及结果

执行mvn clean install命令后,控制台输出无测试失败:

T E S T S
Running runner.RunCucumberTest
?????????????????????????????????????????????????????????????????????????????????????
? Share your Cucumber Report with your team at https://reports.cucumber.io          ?
? Activate publishing with one of the following:                                    ?
?                                                                                   ?
? src/test/resources/cucumber.properties:          cucumber.publish.enabled=true    ?
? src/test/resources/junit-platform.properties:    cucumber.publish.enabled=true    ?
? Environment variable:                            CUCUMBER_PUBLISH_ENABLED=true    ?
? JUnit:                                           @CucumberOptions(publish = true) ?
?                                                                                   ?
? More information at https://cucumber.io/docs/cucumber/environment-variables/      ?
?                                                                                   ?
? Disable this message with one of the following:                                   ?
?                                                                                   ?
? src/test/resources/cucumber.properties:          cucumber.publish.quiet=true      ?
? src/test/resources/junit-platform.properties:    cucumber.publish.quiet=true      ?
?????????????????????????????????????????????????????????????????????????????????????
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.396 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

解决方案

1. 手动同步Maven依赖

IDE可能未自动同步Maven依赖,执行以下操作:

  • IntelliJ:点击右侧Maven面板的「Reload All Maven Projects」按钮
  • Eclipse:右键项目 → Maven → Update Project

2. 显式添加JUnit 4依赖

虽然cucumber-junit默认引入JUnit 4,但部分场景下需要显式声明,在pom.xml的<dependencies>中添加:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

3. 验证测试类目录规范

确保RunCucumberTest类位于src/test/java目录下,Maven仅会为该目录下的代码加载test scope的依赖,若放在src/main/java则无法访问测试依赖。

4. 清理IDE缓存

缓存异常可能导致依赖识别失败:

  • IntelliJ:File → Invalidate Caches... → 勾选Invalidate and Restart
  • Eclipse:Project → Clean... → 选择对应项目执行清理

内容的提问来源于stack exchange,提问作者Leech76

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:05:29