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

17

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

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

有人知道我做错了什么吗?


在我的Xcode 7.3和Xcode 8 beta 6中发生。有时是项目中的其他目标被添加,有时是来自同一工作区中不同项目的目标。如果尝试从测试方案中删除异常目标,则Xcode会崩溃。当禁用目标的“测试”复选框时,Xcode会显示“目标<target>在此方案的Test操作中需要一个或多个测试。禁用目标也将禁用这些测试。”,然后Test操作变灰色。以下解决方案无效。 - funkybro
啊哈!解决方案在这里!https://dev59.com/BYDba4cB1Zd3GeqPFo2k#26360956 - funkybro
可能是Build target randomly added to Xcode scheme的重复问题。 - funkybro
1个回答

27

我们曾经遇到同样的问题,通过以下步骤解决:

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

  2. (不知道这一步是否必要) 转到“窗口”->“项目”,从主机目标中删除派生数据,然后关闭Xcode。 再次打开Xcode,打开你的项目/工作区。

  3. 编辑你的主机目标方案,选择左侧的“构建”,取消选中“查找隐式依赖项” - 我认为这个函数有点错误。

  4. 在你的测试目标中,转到“常规”选项卡,并将主机应用程序恢复到其以前的值,重新检查目标依赖关系。


1
在执行第三步时,请注意,如果您正在使用CocoaPods,请确保Pods目标位于顶部,构建顺序非常重要。否则,您的项目可能无法检测到Pod头文件,从而导致失败。 - grassyburrito
什么意思?你能附上截图吗?我的应用在升级到Xcode 8后无法在模拟器上运行 - “运行”按钮变灰了。 - wtorsi
我在项目中添加了一个Cocoa Touch框架,并收到了OP帖子中描述的行为。这个答案的第一步对我有用!谢谢Thomas。我使用的是Xcode 10.1。 - Zach
这对我有用,但我必须配置方案中的测试部分并重新启用单元测试目标... 我同意“有些错误”的部分... 实际上可能非常错误。 - eharo2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接