【问题标题】:Not able to use XCTUnwrap in Test Framework无法在测试框架中使用 XCTUnwrap
【发布时间】:2020-01-06 14:41:16
【问题描述】:

我正在尝试创建一个包含一些扩展的测试框架。我可以按照这里的建议在框架中import XCTesthttps://stackoverflow.com/a/35102636/3475906

但是,每当我尝试使用 XCTUnwrap 时,都会出现错误:Use of unresolved identifier 'XCTUnwrap'

基本上,我想要这样的东西:

import XCTest

extension Optional {
    func unwrap() -> Wrapped {
        do {
            return try XCTUnwrap(self)
        } catch {
            print("Handle error")
        }
    }
}

有人知道吗?

【问题讨论】:

  • 您可以使用任何其他 XCT 符号吗?例如 XCTAssertEqual?
  • 是的@Sanich 他们工作正常。据我所知,唯一的问题是 XCTUnwrap 。 Swift 语言版本也是 Swift 5。
  • 肯定使用 Xcode 11?
  • 确定我使用的是 Xcode 11.3 @SebJachec

标签: ios swift unit-testing frameworks xctest


【解决方案1】:

XCTUnwrap API 仅在主要测试包目标中可用,在其他库或框架中不可用。有两种方法可以解决此问题:

  1. 将你的Optional 扩展移动到主包,这显然不是你想做的事情:)
  2. 在您的测试框架目标中修改以下构建设置:
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
    "$(inherited)",
    "$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
    "$(inherited)",
    "$(PLATFORM_DIR)/Developer/usr/lib",
);
SWIFT_INCLUDE_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"

【讨论】:

    【解决方案2】:

    至少从 Xcode 11.4 开始,您可以启用:

    ENABLE_TESTING_SEARCH_PATHS = 是

    在您的项目或目标的“构建设置”中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2019-04-02
      • 1970-01-01
      • 2019-01-30
      • 2021-01-11
      • 2013-10-09
      • 1970-01-01
      相关资源
      最近更新 更多