Espresso测试中测试插桩进程崩溃,.txt日志文件位置咨询
解决Espresso测试中「Test instrumentation process crashed」且找不到日志文件的问题
我之前在Jenkins CI环境跑Espresso测试时,也碰到过一模一样的糟心事——系统提示去看某个txt日志,但翻遍Jenkins工作区都找不到,急得头大!下面是我踩坑后总结的几个有效解决方法:
1. 先查Jenkins自带的测试报告
Jenkins会自动收集Android测试的输出,不用死磕那个提示的txt文件:
- 直接去构建工作空间的
app/build/reports/androidTests/connected目录,打开里面的HTML报告,崩溃的堆栈信息通常会内嵌在报告里,一目了然 - 如果是用Gradle命令(比如
./gradlew connectedDebugAndroidTest)触发的测试,直接在Jenkins的构建日志里搜索「instrumentation crashed」「Exception」这类关键词,Gradle会把核心的崩溃堆栈打印到控制台
2. 强制指定日志输出路径到Jenkins可访问目录
系统提示的txt文件路径其实是测试设备/模拟器的本地路径,不是Jenkins服务器的路径。你可以在Gradle配置里强制把日志输出到项目构建目录:
在app模块的build.gradle中添加:
android { testOptions { animationsDisabled = true // 配置测试输出目录为项目构建目录下的固定路径 testOutputDir = file("$project.buildDir/espresso-logs") } }
重新跑测试后,去app/build/espresso-logs目录下找,就能看到包含崩溃堆栈的日志文件了。
3. 用adb手动拉取设备上的日志文件
如果上面的方法没生效,直接在Jenkins构建脚本里加adb命令,把设备上的日志文件拉到Jenkins工作区:
# 先定位设备上的日志文件位置(一般在/data/data/你的包名/files目录下) adb shell find /data/data/com.your.package.name/files -name "*.txt" # 把找到的日志文件拉取到当前工作目录 adb pull /data/data/com.your.package.name/files/package_name.TestName#methodName.txt .
执行完这两步,Jenkins工作区里就会出现你要的日志文件了。
4. 排查Android Test Orchestrator的日志拦截问题
如果你用了Android Test Orchestrator,它可能会拦截部分崩溃日志。可以试试开启它的 debug 模式,让日志更完整:
android { testOptions { execution 'ANDROIDX_TEST_ORCHESTRATOR' orchestratorOptions { clearPackageData true // 开启debug模式输出详细日志 debug true } } }
开启后,Gradle会输出更多关于instrumentation进程的细节,包括崩溃的完整调用栈。
最后提个小技巧:Jenkins的构建日志里经常藏着关键信息,别只盯着那个提示的txt文件,有时候直接搜「Crash」「Stack trace」就能找到你要的内容!
内容的提问来源于stack exchange,提问作者ZakTaccardi
相关产品推荐
相关产品推荐

