ios - 将 XCTest 导入动态框架

标签 ios swift ios9 xctest

我有一个项目,我在其中创建了一个动态框架。在框架本身内部,而不是框架的测试中,我有以下文件:

import Foundation
import XCTest


public func assertThrowsException(function: () throws -> Void) {
    XCTAssertTrue(doesItThrowException(function))
}


public func assertDoesNotThrowsException(function: () throws -> Void) {
    XCTAssertFalse(doesItThrowException(function))
}


private func doesItThrowException(function: () throws -> Void) -> Bool {
    do {
        let _ = try function()
    } catch {
        return true
    }
    return false
}

它们是断言 clojure 引发异常的实用方法。这是为了弥补缺少的 Swift 的 XCTAssertThrows()

当然,我必须导入 XCTest 框架才能使用 XCTAssert* 方法。但我无法实现它。 我不断收到错误消息,指出具有该名称的框架不可用。

你知道如何成功导入XCTest吗?

非常感谢

最佳答案

我遇到了类似的问题并使用了 Nimble 中的build设置项目。解决问题:

1:添加到其他链接器标志:

-weak_framework XC测试 -weak-lswiftXCTest

2:添加到框架搜索路径:

$(DEVELOPER_FRAMEWORKS_DIR) $(PLATFORM_DIR)/Developer/图书馆/框架

现在动态框架可以导入XCTest。

旁注:我也想写一些类似的东西。我最终创建了 mini-framework for unit testing error handling in Swift ,也许有人会觉得它有用。适用于 CocoaPods 和 Carthage。

关于ios - 将 XCTest 导入动态框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370408/

相关文章:

ios - CATextLayer 文本颜色始终为黑色

ios - 来自 PHImageManager 的图像数据不同于保存为 Assets 的图像数据

swift - 我需要在每周的特定日期设置通知..但我不在乎这个月的哪一天

html - watchOS 上不存在 ".SFUIText-Regular"

android - 是否可以强制旧应用程序版本的用户更新?

ios - 使用 Core Data 从 NSMutableArray 创建对象的 NSString

swift - Sprite kit玩家和敌人的碰撞

ios - 如何将所有文本字段的值从 View Controller 传递到 Model 类以将模型逻辑与其分离?

ios - 声明 NSDictionary 并将其放入 Swift 中的键值对?

build - iOS 9 无法从 iTunesConnect 的审核中删除构建