gpt4 book ai didi

swift - 如何将 XCTest 依赖关系链接到生产/主要目标?

转载 作者:搜寻专家 更新时间:2023-10-31 21:45:59 32 4
gpt4 key购买 nike

我正在尝试用 Swift 编写 XCTest 框架的扩展。为此,我创建了一个包含两个目标的项目:主要/生产目标和测试目标。

因为我正在为 XCTest 编写扩展,所以我还需要在我的主要/生产目标中导入 XCTest。但是,我很难这样做。当我在 Xcode 中单击我的项目,然后选择主要目标,转到构建阶段,将二进制文件与库链接并在其中添加 XCTest 时,出现编译错误:

ld: 找不到框架 XCTestclang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我也尝试了提供的解决方案 here不幸的是,这也不起作用。

最佳答案

XCTest 本身的辅助信息很少且很难找到,我也一直在寻找相同的功能并最终设法让它工作。

我在 XCode 10.1 上运行,并在装有 iOS 11 的真实 iPhone 上运行。我确信一般技术也适用于其他版本,但可能需要进行一些调整。

这个 stackoverflow 答案中描述了一般步骤,但需要几个额外的步骤和调整才能在真正的 iPhone 上为我工作:

Is it possible to run XCTest tests in an iOS app?

按照上述链接中的步骤操作。以下步骤偏离了我需要的那些说明。

  1. 按照上述链接中的说明复制到 XCTest 框架中。注意:使用 iPhone.OS 平台的框架,而不是它描述的模拟器。您可以在 Mac 上的实际 XCode 应用程序包中找到此框架文件。 (右键单击“显示包内容”,然后在 ./Contents/Developer/Platforms/iPhoneOS.platform

  2. 中查找
  3. 在您的应用目标中禁用位码。这解决了链接器错误。这是启用它的示例:how to ENABLE_BITCODE in xcode 7?

  4. XCTest.framework 文件拖到目标中的链接二进制文件时,请确保将其也拖到“链接框架和库”正上方的“嵌入式二进制文件” “选项。如果不这样做,您将遇到运行时错误。

add framework to embedded binaries

  1. 开始测试的 ViewController 代码在新的 Swift 中略有不同,这是我正在使用的代码:

import UIKit
import XCTest

class ViewController: UIViewController {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("running tests!")
let suite = XCTestSuite.default;
for test in suite.tests {
test.run()
}
}

}

应该是吧!当我运行上面的应用程序,然后触摸屏幕时,来 self 的 UITesting 目标的所有测试都完美运行并通过了!

关于swift - 如何将 XCTest 依赖关系链接到生产/主要目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54147582/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com