是否可以在运行测试中检查是否有任何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的问题,但是如果您需要使用几个xcasert方法,则会很麻烦。
另一种方法是覆盖continueAfterFailure。如果没有失败,则不会请求属性。如果有,它会的。

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
    }
}

08-19 08:00