I have a project where I have created a dynamic framework. Inside the framework itself, not the framework's tests, I have the following file:
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
}
They are utility methods to assert that a clojure is raising an exception. It's to make up for the missing Swift's XCTAssertThrows()
.
Of course I have to import the XCTest
framework to be able to use XCTAssert
* methods. But I am not able to achieve it.
I keep receiving an error that a framework with that name is not available.
Do you have any idea how to successfully import XCTest
?
Thank you very much
I've run into similar issue and used build settings from Nimble project. To fix issue:
1: Add to Other Linker Flags:
-weak_framework
XCTest
-weak-lswiftXCTest
2: Add to Framework Search Paths:
$(DEVELOPER_FRAMEWORKS_DIR)
$(PLATFORM_DIR)/Developer/Library/Frameworks
Now dynamic framework can import XCTest.
Sidenote: I also wanted to write something similar. I've ended up creating mini-framework for unit testing error handling in Swift, maybe someone will find it useful. Works both with CocoaPods and Carthage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With