将XCTest导入动态框架

jol*_*ger 12 ios xctest swift ios9

我有一个项目,我已经创建了一个动态框架.在框架内部,而不是框架的测试,我有以下文件:

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
}
Run Code Online (Sandbox Code Playgroud)

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

当然,我必须导入XCTest框架才能使用XCTAssert*方法.但我无法实现它.我一直收到一个错误,即该名称的框架不可用.

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

非常感谢你

小智 25

我遇到了类似的问题并使用了Nimble项目的构建设置.解决问题:

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

-weak_framework XCTest -weak-lswiftXCTest

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

$(DEVELOPER_FRAMEWORKS_DIR) $(PLATFORM_DIR)/Developer/Library/Frameworks

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

旁注:我也想写类似的东西.我最终在Swift中为单元测试错误处理创建了迷你框架,也许有人会发现它很有用.适用于CocoaPods和Carthage.