排毒构建成功,但排毒测试失败
Posted
技术标签:
【中文标题】排毒构建成功,但排毒测试失败【英文标题】:Detox build successful but detox test fails 【发布时间】:2020-03-16 00:31:09 【问题描述】:按照 Detox 在adding android 上提供的设置,以下构建 detox 的命令可以正常工作,没有问题
detox build -c android.emu.debug
现在对于 Package.json 文件的设置,我确定目录提供正确
"android.emu.debug":
"binaryPath": "../OUR-APP-NAME/app/build/outputs/apk/androidTest/dev/debug/app-dev-debug-androidTest.apk",
"build": "cd ../OUR-APP-NAME/ && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ../OUR-APP-NAME-TESTS",
"type": "android.emulator",
"name": "Pixel_2_XL_API_26"
,
由于某种原因,运行排毒测试不起作用
detox test -c android.emu.debug
它抛出错误消息
Error: '/Users/z/Projects/company-projects/OUR-APP-NAME/app/build/outputs/apk/androidTest/androidTest/devDebug/androidTest/app-dev-debug-androidTest-androidTest.apk' could not be found, did you run './gradlew assembleAndroidTest' ?
......
detox[29702] ERROR: [cli.js] Error: Command failed: node_modules/.bin/mocha --opts e2e/mocha.opts --configuration android.emu.debug --loglevel verbose --grep :ios: --invert --artifacts-location "artifacts/android.emu.debug.2019-11-20 09-54-23Z" "e2e"
我注意到在第一条错误消息中,Detox 提供的目录是一个错误,所以我尝试了以下操作
创建了一个包含 APK 的目录 将Package.json
文件的binaryPath
上的目录更改为其他目录
直接在 Android Studio 中运行 assembleAndroidTest
和 assembleDebug
gradle 步骤
但无济于事,我无法让它工作,我现在迷路了。
注意事项: - 我正在为原生 Android 应用程序运行 Detox - 我们的 Detox 设置适用于我们的原生 iOS 应用程序 - 我们正在使用 Detox 14.4.1
【问题讨论】:
【参考方案1】:Detox “自定义”binaryPath
中的 APK 名称,因此如果您指定 Detox 二进制文件的确切路径,它将不起作用。
(文件名的这种变化发生在 Detox 的内部 getTestApkPath 函数中,对我来说似乎很不直观)。
要指定 APK Detox 应该使用的确切路径,您可以使用 testBinaryPath
覆盖 binaryPath
中的设置。
编辑:澄清一下,Detox 需要访问 两个 APK 文件,即应用 APK 和测试 APK。 binaryPath 应该指向应用 APK(您在模拟器上运行的普通应用),如果 Detox 无法根据 binaryPath 找到您的测试 APK,则 testBinaryPath 应该指向您的测试 APK。
【讨论】:
【参考方案2】:我也遇到过这个问题,要解决这个问题,请从binaryPath
的路径和文件名中删除androidTest
,从而得到类似android/app/build/outputs/apk/debug/app-debug.apk
的内容。排毒将添加那些在引擎盖下。
【讨论】:
如果可行,则应在 Detox 的文档中指定 @ZonilyJame 同意,一如既往地欢迎 PR,你知道... :)以上是关于排毒构建成功,但排毒测试失败的主要内容,如果未能解决你的问题,请参考以下文章
排毒测试 + React Native + PouchDB 应用程序:由于一些 PouchDB 同步,我们的登录测试一直失败并超时?
使用 react-navigation 和 react-native-fluid-transitions 进行排毒 e2e 测试 - 期望 .toBeVisible 失败