模拟器在 SDK 5.1 中时单元测试抛出错误

Posted

技术标签:

【中文标题】模拟器在 SDK 5.1 中时单元测试抛出错误【英文标题】:Unit tests throw error when simulator is in SDK 5.1 【发布时间】:2013-02-13 18:55:32 【问题描述】:

当目标设置为 6.1 时,我的单元测试运行良好,而当我浏览模拟器中的功能时,代码本身也运行良好。

认为问题在于单元测试期望 6.1 SDK 存在,但它实际上使用的是 5.1 SDK。

这是错误:

dyld: Symbol not found: _objc_setProperty_nonatomic_copy
  Referenced from: /Users/my username/Library/Developer/Xcode/DerivedData/my app name/Build/Products/Debug-Live-iphonesimulator/AgrianUnitTest.octest/AgrianUnitTest
  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/Frameworks/Foundation.framework/Foundation

我的第一个想法是在我的单元测试目标中更改 Base SDK,但除了最新和 6.1 之外我没有任何选项(手动输入 5.1 会导致“找不到 SDK”)。

【问题讨论】:

您是否将部署目标设置为 5.1 ?如果没有,那就试试吧。 已经设置好了。 【参考方案1】:

在升级之前,您的 Xcode 位置可能不是最新的。尝试修复位置。在终端中运行:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
export DEVELOPER_DIR=/Applications/Xcode.app

【讨论】:

尝试从 Organizer -> Projects 中删除派生数据

以上是关于模拟器在 SDK 5.1 中时单元测试抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

在laravel 5.1单元测试中嘲笑hasMany关系

单元测试:为了测试值随时间的变化而返回可观察数据以返回主题的模拟服务导致TS抛出TS2339

如何解决 Angular 单元测试错误:“在 afterAll\n[object ErrorEvent] 中抛出了一个错误”

单元测试Windows.Web.Http HttpClient与模拟的IHttpFilter和IHttpContent,MockedHttpFilter抛出System.InvalidCastExce

redux-saga 的单元测试抛出错误:必须在迭代器上调用 runSaga

使用 XCTAssertThrows 模拟进行 Swift 单元测试