Xcode方案默认位置在测试中被忽略

Jan*_*n K 8 xcode geolocation ios xctest xcuitest

我创建了一个GPX文件并将其添加到我的项目中。如果我正在运行项目,则可以从可能的位置的下拉列表中选择GPX文件进行模拟,并使其正确应用定义的路径。

该项目包含2个方案:Main Scheme和MainTest Scheme。我都设置为将GPX文件用作“选项”选项卡上的“默认位置”。此外,在两个方案的“测试”区域下,我再次指定了相同的文件。

主要方案运行选项 主要方案运行选项

主方案测试设置 主要方案测试

测试方案运行选项 测试方案运行选项

测试方案测试设置 测试方案测试设置

当我在模拟器上运行该应用程序时,它会正确应用模拟位置。但是,当我运行测试时,未应用模拟位置。我无所适从,为什么测试没有自动应用位置。一旦测试被编译并安装在模拟器/测试设备上,我就可以通过Xcode中的下拉菜单应用所需的模拟位置。但是,为了设置自动化测试,该方案需要正确地应用目标模拟位置,因为无法从测试脚本中设置模拟标记。还有其他我想念的东西吗?

cla*_*rus 5

这个有点老了,但是由于最近对同一事物的请求有所增加,因此我使用Xcode 10编写了一个示例。我不知道编写此问题时是否还有其他问题,但是这是它的方式今天工作。

对于测试,您需要指定要在方案的“测试”设置中使用的GPX文件。这是我综合在一起的一个测试项目的示例:

测试模拟的位置设置

另外,请确保该方案标记为“共享”,以便将设置签入您的源存储库,并让其他用户或您的CI管道签出。

在我完成的测试项目中,我为太空针塔添加了一个GPX文件,为自由女神像添加了一个GPX文件。我的运行设置未指定GPX文件或位置,我的单元测试使用/预期了太空针,我的UI测试使用/预期了自由女神像。所有工作均按预期进行。当然,您可以对所有三个目标使用一个GPX文件。

要记住的一件事是位置数据需要花费一些时间,因此您需要使用适当的waitForExpectations检查才能使位置管理器有时间解决。

我已经在GitHub上发布了完整的项目,该项目演示了与XCTests和XCUITests一起使用的GPX文件。