如何添加Calabash以反应Xamarin.UITest的原生iOS

时间:2017-01-05 22:16:29

标签: react-native calabash xamarin.uitest

如何将Calabash框架添加到以React Native构建的iOS应用程序?

我们将iOS应用程序的代码库从Swift移动到React Native,我使用Xamarin.UITest在C#中构建了一套现有的UITests。

我想继续使用我的Xamarin.UITest套件来使用React Native iOS应用程序,但我知道Xamarin.UITest需要将Calabash框架链接到应用程序的源代码中。

Xamarin有documentation关于如何链接Calabash用于在Xcode中构建的iOS应用程序,但我找不到任何关于如何链接Calabash用于在React Native中构建的iOS应用程序的文档。

是否有类似的文档显示如何将Calabash链接到React Native iOS应用程序?

2 个答案:

答案 0 :(得分:3)

在React Native中构建的iOS应用程序会自动创建.xcodeproj文件,并依赖Xcode项目进行构建/部署。这是一个新初始化的React Native Project的图像。

enter image description here

Xamarin.UITest要求将Calabash框架链接到iOS应用程序。因为React Native iOS应用程序依赖于.xcodeproj,所以我们可以按照与使用Swift / ObjC编写应用程序相同的步骤注入Calabash。要完成此操作,请按此Tutorial: Link Calabash in Debug config

在JavaScript源代码中,使用accessibilityLabel属性为每个屏幕元素添加唯一标识符。 In this example我们已将TextInput标识为“TextInputAccessibilityId”。

在Xamarin.UITest中,我们现在可以创建一个字段readonly Query TextInput,并使用相同的属性对其进行初始化:TextInput = x => x.Marked("TextInputAccessibilityId");。现在我们可以interact with this on-screen element in our Xamarin.UITest

所有测试均在Xamarin Test Cloud和results are viewable here

中得到验证

答案 1 :(得分:0)

使用Xamarin测试记录仪将葫芦注入IPA

您可以使用的一个选项是使用Xamarin测试记录仪将葫芦注入您的IPA:https://developer.xamarin.com/guides/testcloud/testrecorder/

这种方法与用于构建原始IPA的方法是框架无关的,因为它将其注入到已编译的IPA中。设置应用程序以使用录像机后,Xamarin测试记录器会执行此操作:https://developer.xamarin.com/guides/testcloud/testrecorder/#Recording_a_Test

此时,您可以使用测试记录器本身创建UITests并导出它们:https://developer.xamarin.com/guides/testcloud/testrecorder/#Exporting_the_Recorded_Test。或者您可以采取与原始IPA位于同一位置的辞职IPA,其名称前缀为“xtr-”,如下所示:

  • myAwesomeApp.ipa(原始IPA)
  • xtr-myAwesomeApp.ipa(与Calabash的IPA)

需要注意的事项

  • IPA由测试记录器辞职 - 为了让Xamarin测试记录器注入Calabash,它还需要重新签署IPA。为此,执行重新签名的系统需要具有有效的签名标识和配置文件,包括应用程序使用的权限。

  • 任何包含Calabash的IPA都将被iOS应用商店拒绝 - 无论使用何种方法将Calabash添加到IPA,都是如此,但重要的是要记住。在上面的示例中,您将使用xtr-myAwesomeApp.ipa进行测试并将myAwesomeApp.ipa本身提交到应用商店。

  • 录制的测试必须作为单独的.cs文件导出才能使用 - 即使您录制了一些测试,这些测试也不会直接包含在IPA中,但测试记录器可以导出它们作为.cs文件,其结构与编写Xamarin.UITests的方式相同。