9

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

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

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

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

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

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

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

4

1 回答 1

6

这个有点老了,但是由于有一些相对较新的请求,所以我使用 Xcode 10 整理了一个示例。我不知道在写这个问题时是否还有其他问题,但这是它的方式今天工作。

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

测试模拟位置设置

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

在我整理的测试项目中,我包含了一个用于太空针塔的 GPX 文件和一个用于自由女神像的 GPX 文件。我的运行设置没有指定 GPX 文件或位置,我的单元测试使用/预期 Space Needle,我的 UI 测试使用/预期自由女神像。一切都按预期工作。当然,您可以为所有三个目标使用一个 GPX 文件。

要记住的一件事是位置数据需要一些时间才能进入,因此您需要使用适当waitForExpectations的检查,以便给位置管理员时间来解决。

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

于 2019-03-26T04:18:40.860 回答