带有主机应用程序的 Xcode 测试目标强制错误的目标进入方案的构建部分

Posted

技术标签:

【中文标题】带有主机应用程序的 Xcode 测试目标强制错误的目标进入方案的构建部分【英文标题】:Xcode test target with host application forces wrong target into build section of scheme 【发布时间】:2015-04-01 13:33:00 【问题描述】:

当我添加一个需要宿主应用程序才能运行 Xcode 的测试目标时,会添加与我添加的应用程序无关的目标。

我有两个方案(内部和生产)。我想在我们的内部应用程序上运行测试。当我将内部应用程序添加为主机时,我最终会将生产目标添加到构建中并且无法删除它。如果我删除主机应用程序,这会消失,但测试也会失败。

有人知道我哪里出错了吗?

【问题讨论】:

在 Xcode 7.3 和 Xcode 8 beta 6 中发生在我身上。有时它是我项目中的另一个目标被添加,有时它是来自同一工作区中不同项目的目标。如果您尝试从测试方案中移除恶意目标,Xcode 会崩溃。当禁用目标的“测试”复选框时,Xcode 说“该方案的测试操作中的一个或多个测试需要目标 。禁用目标也将禁用这些测试。”,然后测试操作是变灰。下面的解决方案不起作用。 啊哈!解决方案就在这里! ***.com/a/26360956/64505 Build target randomly added to Xcode scheme的可能重复 【参考方案1】:

我们遇到了同样的问题,我们通过以下步骤解决了这些问题:

    在您的测试目标中,转到“常规”选项卡并将托管应用程序设置为“无”,然后转到“构建阶段”并删除目标对先前托管目标的依赖。

    (不知道这一步是否必要)转到“Window”->“Projects”,从托管目标中删除 Derived Data 并关闭 Xcode。再次重新打开 Xcode,打开您的项目/工作区。

    编辑您的托管目标的方案,选择左侧的“Build”并取消选中“Find Implicit Dependencies” - 我认为这个功能有些错误。

    在您的测试目标中,转到“常规”选项卡并将托管应用程序设置回其之前的值,重新检查目标依赖关系。

【讨论】:

请记住,在执行第 3 步时,如果您使用的是 cocoapods ,请确保 pods 目标就在顶部,这里的构建顺序非常重要。否则您的项目可能最终无法检测到 pod 头文件。 什么意思?可以附上截图吗?我的应用在 xcode 8 之后无法在模拟器上运行 - “运行”被禁用 我在一个项目中添加了一个 Cocoa Touch 框架,并收到了 OP 帖子中描述的行为。这个答案的第一步为我做了!谢谢托马斯。我在 Xcode 10.1 中。 这对我有用,但我必须在方案中配置测试部分并重新启用单元测试目标......我同意“有点错误”的部分......它可能是,实际上非常错误

以上是关于带有主机应用程序的 Xcode 测试目标强制错误的目标进入方案的构建部分的主要内容,如果未能解决你的问题,请参考以下文章

带有 iOS 9 设备的 Xcode 7 错误:设备不可用(找不到开发者磁盘映像)

单元测试目标中的 xcode RunUnitTests 脚本?

Xcode Audio Unit v3 模板验证失败

使用 Xcode 6 构建 iOS 9 功能

Xcode:如何测试主包 .plist 文件内容?

Xcode UI 测试(目标 C):通过 Accessibility Label 查找元素