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

KIF test bundle XCTest.dylib not loading when using Swift

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

设置:

我已经设置了 Swift 桥接头,导入了 KIF 和我项目的其他相关部分,以便 Swift 可以使用它们。

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

import Foundation

class MyFirstTest : KIFTestCase {

    func testOne() {
        NSLog("Done")
    }
}

测试包构建良好,但是当我 运行 我得到:

2015-07-03 14:52:32.620 MyApp[1104:204793] Error loading /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): Library not loaded: @rpath/libswiftXCTest.dylib

Referenced from: /private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests

Reason: image not found DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest'

我已经尝试了 here 的建议,包括:

我也试过:

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

如果我恢复到仅使用 Objective C 测试,一切正常。

我错过了什么?

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

我一添加,一切就都加载好了。