Detox 成功构建但未在 Android 模拟器上安装应用程序
Detox successfully builds but does not install app on Android emulator
我获得了成功 detox build
,并且模拟器启动了,但应用程序从未安装过。
react-native run-android
(没有排毒)工作正常。
我看到的唯一错误(包括在详细模式下)是:“未找到工具 运行ner”,但我猜这只是意味着 Detox 无法找到该应用程序(这是从未安装过)。
如何让 Detox 将应用程序实际安装到模拟器上?我看到的唯一线索是包名在这种情况下附加了 .test
,这可能是个问题,但我一点也不确定。
(我尝试 adb install
测试应用程序,但这并没有解决问题,而且当我 运行 命令:adb -e install android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk
时,模拟器中也没有任何显示。此安装命令适用于我们的标准调试 apk。)
日志:
BUILD SUCCESSFUL in 25s
1029 actionable tasks: 1 executed, 1028 up-to-date
detox[66003] INFO: [test.js] configuration="android.emu.debug" reportSpecs=true readOnlyEmu=false useCustomLogger=true forceAdbInstall=false DETOX_START_TIMESTAMP=1597412615185 node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 e2e
detox[66004] INFO: [DetoxServer.js] server listening on localhost:55217...
detox[66004] ERROR: Error: No instrumentation runner found on device emulator-11448 for package com.myco.myapp.test
detox[66004] INFO: Example is assigned to undefined
detox[66004] INFO: Example: should have welcome screen
detox[66004] INFO: Example: should have welcome screen [SKIPPED]
detox[66003] ERROR: [cli.js] Error: Command failed: node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 e2e
detoxrc 条目:
"android.emu.debug": {
"binaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
"testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
"build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
"type": "android.emulator",
"device": {
"avdName": "Pixel_API_28_AOSP"
}
},
这与 APK 路径有关。 Detox 会尝试计算调试 APK 路径,如果错误,则会出现这些错误。 (如果您为不同的架构构建多个版本的 APK,Detox 似乎无法处理。)
解决方案是指向您的两个 APK——调试应用(“二进制”)和检测 APK(“测试二进制”):
"binaryPath": "android/app/build/outputs/apk/debug/app-x86_64-debug.apk",
"testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
我获得了成功 detox build
,并且模拟器启动了,但应用程序从未安装过。
react-native run-android
(没有排毒)工作正常。
我看到的唯一错误(包括在详细模式下)是:“未找到工具 运行ner”,但我猜这只是意味着 Detox 无法找到该应用程序(这是从未安装过)。
如何让 Detox 将应用程序实际安装到模拟器上?我看到的唯一线索是包名在这种情况下附加了 .test
,这可能是个问题,但我一点也不确定。
(我尝试 adb install
测试应用程序,但这并没有解决问题,而且当我 运行 命令:adb -e install android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk
时,模拟器中也没有任何显示。此安装命令适用于我们的标准调试 apk。)
日志:
BUILD SUCCESSFUL in 25s
1029 actionable tasks: 1 executed, 1028 up-to-date
detox[66003] INFO: [test.js] configuration="android.emu.debug" reportSpecs=true readOnlyEmu=false useCustomLogger=true forceAdbInstall=false DETOX_START_TIMESTAMP=1597412615185 node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 e2e
detox[66004] INFO: [DetoxServer.js] server listening on localhost:55217...
detox[66004] ERROR: Error: No instrumentation runner found on device emulator-11448 for package com.myco.myapp.test
detox[66004] INFO: Example is assigned to undefined
detox[66004] INFO: Example: should have welcome screen
detox[66004] INFO: Example: should have welcome screen [SKIPPED]
detox[66003] ERROR: [cli.js] Error: Command failed: node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 e2e
detoxrc 条目:
"android.emu.debug": {
"binaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
"testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
"build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
"type": "android.emulator",
"device": {
"avdName": "Pixel_API_28_AOSP"
}
},
这与 APK 路径有关。 Detox 会尝试计算调试 APK 路径,如果错误,则会出现这些错误。 (如果您为不同的架构构建多个版本的 APK,Detox 似乎无法处理。)
解决方案是指向您的两个 APK——调试应用(“二进制”)和检测 APK(“测试二进制”):
"binaryPath": "android/app/build/outputs/apk/debug/app-x86_64-debug.apk",
"testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",