1

设想

我正在尝试使用 detox 为 react-native 项目测试 android 应用程序。在 detox 之外的设备或模拟器上运行应用程序时,一切正常。

生成 detox 构建后,当我运行 detox test 命令时,该应用程序已成功安装并在模拟器上打开。在测试device.reloadReactNative中调用 via时beforeEach,应用程序崩溃并出现以下错误。我在这里将测试文件和相应的详细 adb logcat输出放在一个要点中。

无论出于何种原因,AppRegistry.js都没有被加载,否则模块应该是已知的(参见错误)。

总结一下:

  • 在 detox (ios+android) 之外构建和应用程序执行工作
  • 排毒构建作品(ios + android)
  • 排毒测试适用于 ios
  • 在 android 上运行 detox 测试时,AppRegistry 在reloadReactNative被调用后丢失。为什么?

环境

  • 反应原生 cli:1.3.0
  • 反应原生:0.55.3
  • 反应原生导航:1.1.457
  • 排毒服务器:7.0.0
  • 排毒:7.3.7
  • OSX:10.13.4
  • X代码:9.2

命令

detox test --configuration android.emu.release --cleanup -l verbose

错误

INSTRUMENTATION_RESULT:longMsg=com.facebook.react.common.JavascriptException:模块 AppRegistry 不是注册的可调用模块(调用 runApplication)

由于AppRegistry尚未注册到 MessageQueue 的模块列表,因此在此处抛出。

4

1 回答 1

1

Detox 与 React Native Navigation v1 存在兼容性问题。这可能永远无法解决,因为 Wix 已经弃用了 v1 以支持 v2。

您可以迁移到 v2 或使用v1➜v2 适配器。Detox 已经在 React Native Navigation v2 上进行了测试,事实上,RNNv2 e2e 测试套件在两个平台上都使用了 Detox。

于 2018-06-08T08:50:19.127 回答