我想为用 React Native 编写的应用程序创建自动测试。我只想测试逻辑(而不是 UI)。
Jest 似乎是在计算机上运行的单元甚至集成测试的绝佳解决方案。但我想在真实设备上测试该应用程序。我有一个没有 UI 的组件,它执行一些逻辑、与其他设备的无线通信等。我需要特别测试该通信,如果没有设备,这是无法完成的。
是否有任何框架或标准解决方案可以做到这一点?
最佳答案
好的,我做了关于测试 React Native 应用程序的研究。
目前 ReactNative 不提供可以在真实设备上运行集成(而非 UI)测试的平台独立测试框架。事实上有一个RCTTestRunner但它的功能有限,并且仅适用于 iOS 设备。
功能测试
有多种功能测试框架。这些测试主要依赖于UI组件,用于用户交互的黑盒测试。有两个成熟的跨平台框架可用于此目的:Calabash和 Appium 。 Appium 似乎是更好的解决方案,因为它是适用于两个平台的单一工具(Calabash 实际上是适用于 iOS 和 Android 的两个项目的集合)。此外,当 Calabash 仅支持 Ruby 时,Appium 支持多种语言(JavaScript、Python、Java...)。
还有一个Cavy该项目看起来很有前途,但以一种黑客的方式使用 React ref 生成函数,并且需要对应用程序代码进行多次修改。
但所有这些都只是为了进行 UI 测试。
解决方案
我用来测试应用程序逻辑的解决方案(不受 UI 更改的影响)如下。我创建了应用程序的特殊版本(通过创建新目标),该版本已用测试组件替换了主 UI 组件。该测试组件在应用程序的顶部运行。它只是触发测试并显示日志。然后,功能测试框架读取并解析这些日志以生成报告。
关于testing - 如何对 native 应用程序进行自动设备测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44806729/