如何在iOS应用程序中为多个模拟器运行UITest?

本文假定您已经知道如何在Xcode中编写UITest。

现在,如何运行与彼此交互的UITest,在这种情况下,您可以为一种消息传递功能编写测试用例,该功能可以在多个模拟器中运行多个用户,并等待他们彼此聊天。 这是消息传递应用程序的理想自动UITest,对吗?

我知道,关于此的StackOverFlow问题不多。

我知道,RayWenderlich网站上也没有教程。

我知道,您可能尝试过不同的解决方案,但是其中任何一个都有一些局限性。

但是,在这里您可以找到适合我的解决方案!

为什么呢

好吧,如果您的应用程序中具有消息传递功能,则应用程序最重要的测试范围是消息传递的整个功能,不仅要确保已发送消息,还要确保将收到消息,或者如果您有群组消息,请确保群组中的所有成员都会收到消息。

您可能会想到可能的解决方案,以下是每种解决方案的缺点:

  • 手动测试

您知道这不是一个好选择! 因为这很耗时,所以即使您的测试场景文档齐全,您也可能会有人为错误,但是测试人员可能会错过对所有案例进行测试的机会!

  • 在一个模拟器/设备中运行两个应用程序:

首先 ,如果您要测试多个用户,则必须为要运行的每个主应用程序定义多个捆绑标识符,并且有一个测试应用程序将与其他应用程序交互。 但可以肯定的是,这不是一个漂亮的测试环境!

其次 ,在应用程序之间进行切换将非常耗时!

第三,但最重要的是,如果您不仅仅想要像行为测试这样的UITest,或者您正在使用像KIF这样的库,它们仅与UnitTest Target兼容,那么在任何这些情况下,您都必须在UnitTest Target中使用测试用例可以访问您的应用程序模块,并获得诸如KIF之类的库的支持! 但是,您将失去运行可与主应用程序交互的单独测试应用程序的功能! 甚至,您将无法在setup()函数中运行以下命令,您将获得运行时错误!

  XCUIApplication()。launch() 
  • 同时运行两个模拟器:

是的,这也是我认为的最佳解决方案。 但请记住,我们不仅需要UITest,而且还使用KIF编写UITest案例!