4

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

设置:

  • Xcode 6.4
  • 可可足类 0.37.2
  • Podfile 使用最新版本的 KIF

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

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

import Foundation

class MyFirstTest : KIFTestCase {

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

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

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'

我已经尝试过这里的建议,包括:

  • 将应用程序和测试包目标的运行路径搜索路径设置为 @executable_path/Frameworks
  • 将“嵌入内容包含 Swift 代码”设置为 YES

我也试过:

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

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

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

我错过了什么?

4

1 回答 1

10

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

我添加后,一切都加载正常。

在此处输入图像描述

于 2015-07-04T08:49:03.173 回答