XCTAssertUnrecoverable 1.0.0

XCTAssertUnrecoverable 1.0.0

ukitaka 维护。



  • ukitaka

XCTAssertUnrecoverable

Build Status platforms pod Carthage compatible Swift Package Manager compatible

此库使得即使使用 fatalErrorpreconditionFailure 等测试,也能够测试全局错误/逻辑失败的特性。

安装

XCTAssertUnrecoverable 依赖于 johnno1962/Fortify,但为了直接支持 CocoaPods 和 Carthage,它已被包含在该库中。

CocoaPods

# Podfile
use_frameworks!

target 'YOUR_TESTING_TARGET' do
    pod 'XCTAssertUnrecoverable', '~> 1.0'
end
$ pod install

Carthage

将其添加到 Cartfile.private

github "ukitaka/XCTAssertUnrecoverable"
$ carthage update

Swift 包管理器

let package = Package(
    name: "YourModule",
    dependencies: [
        .package(url: "https://github.com/ukitaka/XCTAssertUnrecoverable.git", "1.0.0")
    ],
    targets: [
        .target(
            name: "YourModule",
            dependencies: [ ... ]),
        .testTarget(
            name: "YourModuleTests",
            dependencies: ["XCTAssertUnrecoverable"]),
    ]
)
$ swift build

用法

仅提供了一个函数 XCTAssertUnrecoverable

import XCTest
import XCTAssertUnrecoverable

class ExampleTests: XCTestCase {
    func testExample() {
        XCTAssertUnrecoverable {
            // some program that will crash.
        }
    }
}

重要:请禁用调试器。

lldb 会截获一些信号,例如 SIGILLSIGABRT,因此您 不能 在调试器中使用此库。

重要:注意构建配置和优化级别。

例如,assert 只在 -Onone 构建中工作。
因此,在其他优化级别中可能不会崩溃。

-Onone -O -Osize -Ounchecked
fatalError
先决条件
assert

注意:尚不支持多线程。

// NG
XCTAssertUnrecoverable {
    DispatchQueue.global().async {
        fatalError("fatal error!")
    }
}

要求

Swift 4.1