使用Swift时不加载KIF测试包XCTest.dylib

Joh*_*tin 4 objective-c ios kif swift xcode6

我正在尝试将Swift中的新测试添加到当前用Objective C编写的现有KIF测试包中.

建立:

  • Xcode 6.4
  • cocoapods 0.37.2
  • Podfile使用最新版本的KIF

我已经设置了Swift桥接头,导入了KIF以及我项目的其他相关部分,以便将这些部分提供给Swift.

我把事情简化为一个简单的测试用例,在这个阶段甚至不使用KIF:

import Foundation

class MyFirstTest : KIFTestCase {

    func testOne() {
        NSLog("Done")
    }
}
Run Code Online (Sandbox Code Playgroud)

测试包构建正常,但是当我运行时,我得到:

2015-07-03 14:52:32.620 MyApp [1104:204793]加载/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests:dlopen时出错(/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests,262):未加载库:@ rpath/libswiftXCTest.dylib

参考自:/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests

原因:未找到图片DevToolsBundleInjection:加载包'/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest'时出错

我在这里尝试过这些建议,包括:

  • 为App和测试包目标设置运行路径搜索路径到@ executable_path/Frameworks
  • 将"嵌入式内容包含Swift代码"设置为YES

我也尝试过:

  • 完整的cocoapods清理和重建项目/工作区
  • 删除所有DerivedData并运行干净的构建

我也看到过这可能与代码签名身份相关的建议,但捆绑包无法在具有开发标识的模拟器上以及在真实设备上加载.

如果我回到仅使用Objective C测试,一切正常.

我错过了什么?

Joh*_*tin 10

终于想通了.对我来说,解决方案是确保测试包目标的运行路径设置包括@ loader_path/Frameworks以及@ executable_path/Frameworks.

一旦我补充说,一切都很好.

在此输入图像描述