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