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

创建Cucumber Java UI测试项目时遇NoClassDefFoundError错误求助

解决方案:Cucumber Android测试NoClassDefFoundError问题

1. 修正依赖配置

确保Module级别的build.gradle中正确引入适配Android测试的Cucumber依赖,且版本保持一致:

android {
    defaultConfig {
        // 指定Cucumber的Android测试运行器
        testInstrumentationRunner "io.cucumber.android.runner.CucumberAndroidJUnitRunner"
    }

    sourceSets {
        androidTest {
            // 配置Feature文件存放目录
            assets.srcDirs += files('src/androidTest/resources/features')
        }
    }
}

dependencies {
    androidTestImplementation 'io.cucumber:cucumber-android:7.14.0'
    androidTestImplementation 'io.cucumber:cucumber-junit:7.14.0'
    androidTestImplementation 'junit:junit:4.13.2'
}

2. 规范测试类写法

测试运行类需继承Cucumber提供的Android测试类,并正确配置Feature和步骤定义路径:

import io.cucumber.junit.CucumberOptions;
import io.cucumber.android.runner.CucumberAndroidJUnitRunner;

@CucumberOptions(
    features = "features", // 对应assets目录下的Feature文件路径
    glue = "com.your.package.steps" // 步骤定义类所在包名
)
public class CucumberTestRunner extends CucumberAndroidJUnitRunner {
}

3. 清理重建项目

执行以下命令清理并重新构建测试包:

./gradlew clean
./gradlew assembleAndroidTest

之后重新运行Android测试。

4. 排查依赖冲突

若问题仍存在,执行命令查看依赖树:

./gradlew androidTestDependencies

如果发现旧版本或冲突的Cucumber依赖,手动排除:

androidTestImplementation('io.cucumber:cucumber-android:7.14.0') {
    exclude group: 'io.cucumber', module: 'cucumber-core'
}

错误核心原因

cucumber/runtime/ClassFinder是Cucumber运行时的核心类,出现找不到的情况通常是:

  • 依赖未正确引入到androidTest编译路径
  • Cucumber各组件版本不兼容导致类缺失
  • 测试运行器未配置为Cucumber提供的Android专用运行器

内容的提问来源于stack exchange,提问作者Partha Pratim Ghose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:22:02