Android项目运行Simple Cucumber测试显示0用例通过问题咨询
问题排查与解决
出现0测试用例执行的核心原因是Cucumber的用例发现链路没有打通,对照demo配置时最容易漏的几个问题点按优先级排查即可:
- 检查cucumber配置文件的路径与内容
确认androidTest/assets/路径下存在cucumber.properties文件,文件内的包名配置必须和你项目测试类的实际包名完全一致,不要直接照搬demo的包名:
包名配置错误时,Cucumber扫描不到任何带步骤注解的类,会直接返回0用例。# 替换为你自己的测试类所在包名 cucumber.package=com.devsank.androiduitesting.test # 对应feature文件存放的assets子目录名 cucumber.android.features=features - 检查.feature文件的存放位置
所有.feature格式的用例文件必须放在androidTest/assets/features/目录下(和上面配置的features参数对应),如果误放在java源码目录、res目录下,运行时Cucumber无法读取到文件,自然不会执行任何用例。 - 检查Gradle中测试运行器配置
打开app模块的build.gradle文件,确认defaultConfig块中已经将测试运行器替换为Cucumber提供的专用运行器:
如果保留默认的defaultConfig { // 其他配置... testInstrumentationRunner "cucumber.android.runner.CucumberAndroidJUnitRunner" // 如果使用AndroidX依赖,要引入对应AndroidX版本的cucumber-android依赖,runner类路径保持一致 }AndroidJUnitRunner,运行时不会触发Cucumber的用例扫描逻辑,只会识别普通JUnit用例,没有普通JUnit用例时就会显示0测试通过。 - 检查依赖版本兼容性
直接照搬demo的依赖版本很容易和你当前项目的AGP、compileSdk、AndroidX库版本产生冲突,冲突时Cucumber会静默加载失败,不会抛出明显报错。建议先将cucumber-android依赖升级到和你当前AGP版本匹配的最新稳定版,再重新同步项目运行。 - 检查步骤定义的匹配性
确认步骤定义类中@Given/@When/@Then注解内的正则文本,和.feature文件里的步骤文本完全匹配,多余空格、标点差异都会导致Cucumber匹配不到步骤实现,跳过对应用例。
快速定位技巧:运行测试时在Logcat中过滤
Cucumber关键词的日志,可以直接看到具体是配置文件缺失、feature文件找不到还是步骤匹配失败,不用逐行盲查配置。
内容的提问来源于stack exchange,提问作者Sanket
相关产品推荐
相关产品推荐

