排毒(Android):device.reloadReactNative 失败

Detox(Android): device.reloadReactNative fails

场景

我正在尝试使用 detox 为反应本机项目测试 android 应用程序。 当 运行 在排毒之外的设备或模拟器上运行该应用程序时,一切正常。

生成排毒版本后,当我运行排毒测试命令时,应用程序已成功安装并在模拟器上打开。当在测试中通过 beforeEach 调用 device.reloadReactNative 时,应用程序崩溃并出现如下所述的错误。 我把测试文件和相应的verbose adb logcat output in a gist here.

无论什么原因,AppRegistry.js 没有被加载,否则模块应该是已知的(见错误)。

总结:

环境

命令

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

错误

INSTRUMENTATION_RESULT: longMsg=com.facebook.react.common.JavascriptException: Module AppRegistry is not a registered callable module (calling runApplication)

Thrown here因为AppRegistry还没有注册到MessageQueue的模块列表中。

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

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