testing目标X遇到错误(早期意外退出,操作永远不会完成自举 – 不会尝试重新启动

我已经开始与OCMock合作编写我已经集成到项目工作区中的现有项目的testing用例。 按照此链接中提到的所有步骤

当我第一次执行testing用例时,给了我这个错误。 我search了它,并尝试了一些解决scheme,如“创build新的目标”,“重新启动Xcode”,但它没有帮助我。 任何想法?

我有我的笔记和演示应用程序的Cocoapods和迦太基在这里https://github.com/onmyway133/TestTarget

  • 确保所有的框架链接到testing目标
  • Runpath Search Pathsconfiguration为指向$(FRAMEWORK_SEARCH_PATHS)

更多信息

  • 运行path相关库

我正在使用迦太基,而我的问题是在testing目标中寻找依赖关系。 固定:

$(PROJECT_DIR)/Carthage/Build/iOSRunpath Search Paths

你可以在这里find参考: 迦太基问题

我的解决scheme是添加一个“复制文件阶段”到我的testing目标。 在那里,我将目的地设置为框架,并用+符号添加了我的框架。

在我的情况下,链接的文件没有错。 模拟器被卡在应用程序触发的消息,如:“应用程序名称想给你发送通知”。 按下确定,下一次我的XCTests工作正常。

在我的情况下,Build Active Architecture Only被设置为YES。

在项目和目标中:构build设置 – >体系结构 – >构build主动体系结构只能是NO而不是YES

只是分享我对这个错误的经验:

我正在使用fastlane + cocoapods。

我有一个2个dynamic框架的工作区:

  • A.framework
  • B.framework

依赖关系:

  • A取决于AFNetworking使用cocoapods
  • B依赖于A.

在Podfile中定义了依赖关系。

这个错误引发了执行框架B的testing。

在我的情况下,这个问题与B.framework目标中对AFNetworking的缺失依赖有关。

在Podfile的B.framework中将AFD依赖关系添加到AFNetworking中,全部解决。

所以即使目标B编译成功,AFNetworking也没有embedded到Btesting应用程序中,模拟器无法运行Btesting应用程序,引发这个“非常有意义的”(*)错误。

(*)感谢苹果为此!

哇,我浪费了很多时间,我的testing包有“主机应用程序”选中我的应用程序。 其他testing包没有。

我预计这个解决scheme可能不是每种情况都适合的解决scheme,但是我的testing主要是testingdynamic库,它并不需要主机应用程序来运行。 我得到了上述错误,把它关掉让我运行testing没有得到这个错误和断点工作。 我正在运行MacOS,但它可能在其他环境中类似。 我预计这个解决scheme可能不是每种情况都适合的解决scheme,但是我的testing主要是testingdynamic库,它并不需要主机应用程序来运行。

在testing包上转到常规 – >testing – >将“主机应用程序”设置为无。

希望能分享我的答案,希望能为别人节省时间。

对于我.m文件没有正确链接下生成阶段 – >编译源

就我而言,我已经在头文件中声明了一个只读属性:

 // In .h file @property (nonatomic, readonly) NSUInteger count; 

但我忘了把这个声明添加到.m中,所以会产生一个setter:

 // In .m file @property (nonatomic, assign) NSUInteger count; 

愚蠢的错误,不完全确定为什么它performance在这个错误,但添加到.m的行解决了这个问题。

在我的情况下,我的生成设置 – >体系结构只为armv7设置,我更改为ARCHS_STANDARD是我的主机应用程序

我的情况很特殊。 我使用了2个文件作为testing类。 一个完美工作,另一个有这个错误。
两者都在相同的框架下链接。
只需清除派生的数据

窗口 => 项目 => 删除 (在您的项目)

祝你好运,快乐的testing!

在我的情况下,我没有添加一个运行脚本阶段的快速和灵活的库,我使用迦太基整合。

对我而言,我必须在设备的“设置 – >常规”下的“设备pipe理”中“信任”开发者。 (设置 – >一般 – >设备pipe理 – > DeveloperID – >'信任应用程序')当我正在运行应用程序通过侧面加载使用我的苹果ID。