swift - 如何检查 XCTestCase 测试是否失败

标签 swift xctest xctestcase

是否可以在正在运行的测试中检查其任何 XCTAssert 是否失败?我有一个连续几个断言的测试,我想随后添加一些代码以在其中任何一个失败时执行特定操作:

class testClass : XCTestCase
{
    func testSomething()
    {
        let someComputedValue1 = func1()
        let someComputedValue2 = func2()

        XCTAssertLessThanOrEqual(someComputedValue1, 0.5)
        XCTAssertLessThanOrEqual(someComputedValue2, 0.2)

        if anyOfTheAboveAssertionsFailed {
            performAction()
        }
    }
}

我想要提示的部分是 anyOfTheAboveAssertionsFailed 条件,而不重复与硬编码值的比较。

最佳答案

虽然使用自己的断言方法可以解决 PO 的问题,但如果需要使用多个 XCAssert 方法,那就很麻烦了。

另一种方法是重写 continueAfterFailure 。如果没有失败,则不会请求该属性(property)。如果有的话,就会的。

class MyTest: XCTest {
    private var hasFailed = false
    override var continueAfterFailure: Bool {
        get {
            hasFailed = true
            return super.continueAfterFailure
        }
        set {
            super.continueAfterFailure = newValue
        }
    }
    override func tearDown() {
        if hasFailed { performAction() }
        hasFailed = false
    }
}

关于swift - 如何检查 XCTestCase 测试是否失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659366/

相关文章:

swift - MacOS 中的 WkWebView 在本地或远程内容上保持空白

ios - 以编程方式调用表情符号键盘?

ios - Xcode 单元测试缺少某些项目类

ios - UnitTest 我应该使用拆解和设置吗

swift - 如何从一个类 xcode uitesting 运行特定测试

swift - 在 Swift 中使用 Sprite Kit 呈现场景

macos - swift 设置为默认浏览器

objective-c - 延迟 XCTest 中所有单元测试的执行

ios - 无法从我的项目中分配任何内容 - 静态库(使用 XCTests)