我有一个项目,我已经创建了一个动态框架。在框架内部,而不是框架的测试,我有以下文件:
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项目的构建设置。解决问题:
1:添加到其他链接器标志:
-weak_framework
XCTest
-weak-lswiftXCTest
2:添加到框架搜索路径:
$(DEVELOPER_FRAMEWORKS_DIR)
$(PLATFORM_DIR)/Developer/Library/Frameworks
现在动态框架可以导入XCTest。
旁注:我也想写类似的东西。我最终创建了mini-framework for unit testing error handling in Swift,也许有人会发现它很有用。适用于CocoaPods和Carthage。