更新到 Xcode 10 后 XCUITest 的测试目标似乎不起作用

Posted

技术标签:

【中文标题】更新到 Xcode 10 后 XCUITest 的测试目标似乎不起作用【英文标题】:Test target of XCUITest seems not to be working after updating to Xcode 10 【发布时间】:2018-11-06 09:27:14 【问题描述】:

我从 Xcode 9.4 更新到 xcode 10,然后在尝试运行我的 UI 测试时似乎没有任何工作。测试应用程序加载了一段时间,然后测试失败,尽管在测试之前构建已成功完成。 并且源代码也成功构建,我可以在模拟器上运行应用程序。

错误是:

Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying error: The test runner failed to load the test bundle. Executable cannot be loaded for some other reason, such as a problem with a library it depends on or a code signature/entitlements mismatch.))

【问题讨论】:

Xcode 10.1 还是 10 ? 我在 Xcode 10 / Xcode 10.1 上遇到了同样的问题...你有一个包含多个项目/框架的工作区吗? Xcode 10.1 是的,我有一个包含许多框架的工作区,是的,但只有一个项目。 【参考方案1】:

首先,如果您使用的是 Cocoapods,请确保您的测试目标设置了继承的搜索路径,例如:

# MARK: Common pods
abstract_target 'AppCommon' do
  pod 'Alamofire'

  target 'MyFrameworkA' do
    project './MyPath/MyFrameworkA/MyFrameworkA.xcodeproj'

    target 'MyFrameworkATests' do
      inherit! :search_paths
    end
  end
end

接下来,在您的 FrameworkA构建阶段中,确保任何其他框架(A 中使用的 B、C)是设置为目标依赖项并添加到Linked Binary With Libraries

最后,确保您的 FrameworkATests 目标在 Target Dependencies 中有您的 FrameworkA 并添加到 Linked Binary With Libraries 阶段。

【讨论】:

但我需要了解为什么会这样。现在 Xcode10 有什么不同? 好消息!忘记我关于 Xcode 10 的问题,我有同样的问题,我的调试正在进行中。如果我没记错的话,它与 Xcode 9 相同。但编译问题也可能与新的 Build System 更新有关。您可以在 File / Workspace Settings / New Build System (Default) 中看到它。 另外,请确保您没有两次导入任何 pod,例如通过在子目标上再次声明它【参考方案2】:

Xcode 10 引入了新的构建系统,它可以并行化大部分构建讨论,包括依赖项。新的构建系统可以检测到大部分配置问题。必须有异常配置的项目开始失败,新的构建系统已经检测到这一点。关于构建系统你应该知道的所有事情https://www.xcteq.co.uk/xcblog/five-things-you-must-know-about-xcode-10-new-build-system/

【讨论】:

以上是关于更新到 Xcode 10 后 XCUITest 的测试目标似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins 中将屏幕截图附加到 XCUITest 报告。只有通过 XCODE 运行才能看到截图

在设备上运行时在我的 XCUITest 包 ID 中自动附加 .xctrunner

使用 Xcode 7.2 录制时 XCUITest 崩溃

为啥 XCUITest 在 Xcode 11.4.1 中捕获的流失败

Xcode 11 Export for Localization 不起作用,Include Screenshots 功能被禁用,并且在测试日志中找不到 XCUITest 屏幕截图附件

观察更新到 xcode 10.2.1 后数据库功能不起作用