排毒构建成功,但排毒测试失败

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 中运行 assembleAndroidTestassembleDebug 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 失败