将OCUnit迁移到XCTest会导致链接器错误

时间:2014-11-10 10:20:13

标签: ios linker xcode6 xctest

我已尝试将OCUnit迁移到XCTest。所以我有100%可编译的项目,但我看到下一个链接器错误:

Error:Undefined symbol '_OBJC_CLASS_$_XCTestCase' referenced from:...

我的"Framework Search Paths"看起来像这样:

$(SDKROOT)/Developer/Library/Frameworks     (non-recursive)
$(inherited)                                (non-recursive)
$(DEVELOPER_FRAMEWORKS_DIR)                 (non-recursive)

我不知道还有什么可以做什么来满足链接器

1 个答案:

答案 0 :(得分:1)

在使用
进行迁移后,我在Xcode 6.1中看到完全相同的错误消息 下拉菜单修改重构转换为XCTest

我有两个解决方案:


解决方案1 ​​ (重新创建测试项目)

  1. 备份测试项目中的所有源文件。

  2. 项目导航器中,选择项目 这显示了项目设置。

  3. 在项目设置中,单击显示项目和目标列表Show project and targets list

  4. 选择测试目标,然后按 delete 将其删除。 project settings - test target

  5. 项目导航器中,选择测试目标,然后按 delete 将其删除。 Project Navigator - test target

  6. 测试导航器中,点击左下方的 + 按钮,然后选择新测试目标Test Navigator - New Test Target

  7. 将原始源文件添加回新的测试目标。

  8. 现在照常测试您的项目。


  9. 解决方案2 (严格修改测试项目)

    1. 项目导航器中,选择项目 这显示了项目设置。

    2. 在项目设置中,选择测试目标(不是主要目标),然后选择构建阶段

    3. 链接二进制文件库中,点击 + 按钮。
      这显示了框架列表,但没有XCTest。

    4. 选择一个您根本不使用的框架,例如 Twitter.framework ,然后点击添加

    5. 在文本编辑器中打开项目文件( something.pbxproj ),并将所有 Twitter.framework 替换为 XCTest.framework < / strong>即可。
      注意: pbxproj 文件位于 .xcodeproj 文件夹中。在Finder中,您必须在.xcodeproj上右键单击并选择显示包内容

    6. 在Xcode中返回链接二进制文件库,并检查是否添加了 XCTest.framework

      • 如果没有,请尝试重新启动Xcode。
      • 如果添加但是红色,请忽略它。 Xcode无法找到框架,但链接器可以。
    7. 现在照常测试您的项目。