【问题标题】:Xcode 10.1: Pods not compiling when running UITestXcode 10.1:运行 UITest 时 Pod 未编译
【发布时间】:2023-04-03 01:25:02
【问题描述】:

我正在尝试在我正在开发的应用程序中实现 UITest。

当我在我的 UITests.swift 文件中并尝试从测试中运行应用程序时,Xcode 为我正在使用的一些 pod 提供以下错误:

Command CompileSwift failed with a nonzero exit code

它会在运行常规项目时为一堆正在编译的 pod 提供此错误:

我的 PodFile 如下所示:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

source 'https://github.com/cocoapods/specs.git'

project 'Project.xcodeproj'

use_frameworks!

# Define all thirdparty pods we need
def thirdparty
    pod 'Moya', '~> 11.0'
    pod 'Alamofire'
    pod 'SwiftyJSON'
    pod 'Differ'
    .. a bunch of other pods
end

# Pods for Project project
target 'Project' do
    thirdparty
end

# Pods for ProjectTests
target 'ProjectUITests' do
    thirdparty

    pod 'Nimble'
end

我很难解释为什么会发生这种情况,因为我的项目通常编译得很好。 S.O. 上的其他帖子关于这个问题报告,在构建项目时也会出现问题,而不仅仅是运行测试

问题如何确保我在项目中使用的所有 pod 在从 UITest 构建时也能正确编译?

【问题讨论】:

    标签: ios swift cocoapods xcode-ui-testing uitest


    【解决方案1】:

    如何确保我在项目中使用的所有 pod 在从 UITest 构建时也能正确编译?

    知道某物是否会构建的唯一方法是尝试构建它。因此,当您更改 CocoaPods 配置时,即使只是为了更新到一个或多个 pod 的新版本,您也需要尝试构建每个目标。

    target 'ProjectUITests' do
        thirdparty
        pod 'Nimble'
    end`
    

    根据您的 Podfile,您的 pod Nimble 仅在 ProjectUITests 目标中使用。如果这是唯一可以构建的目标,那么该 pod 很可能是罪魁祸首。

    除了一种情况(至少就您所展示的情况而言),您的 Podfile 没有为它指定的各种 pod 指定版本。如果您忽略给定 pod 的版本,您的项目将使用最新的可用版本。这意味着无论何时更新您的 pod,您都会下载最新版本,即使该新版本包含重大更改。指定您知道有效的版本会更安全,或者至少将版本限制为次要版本和补丁更新,例如:

    pod 'Nimble', '~>7.0'
    

    这将使 CocoaPods 自动使用最新版本,但不包括 8.0。如果 pod 开发人员正确遵循 semantic versioning 方案,那应该可以确保您不会无意中引入任何重大更改。

    【讨论】:

    • 感谢您的回答,奇怪的是 Nimble 实际上似乎工作正常,因为我得到的错误来自其他在构建正常目标时工作正常的 pod。我已经用截图更新了我的问题
    • @Joris416 Nimble 是您屏幕截图中列表中的第二个——它看起来不太好用。为了缩小范围,您可以添加另一个也包括 Nimble 的目标,然后查看该目标是否也失败。然后移除 Nimble,看看问题是否消失。
    • 对不起,应该看到了!令我困惑的是其他吊舱不工作。我现在正在尝试您的建议。
    【解决方案2】:

    问题是目标 :AppModuleTests 没有应用程序主机,而您正在使用继承! :搜索路径。这意味着该目标会找到从主机加载它们的依赖项,但在这种情况下没有。

    目标 TestApp 做 豆荚 目标:AppModuleTests 结束

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 2019-04-09
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      相关资源
      最近更新 更多