是否有可能在正在运行的测试中检查其XCTAssert
是否有任何失败?我有一个连续几个断言的测试,我想在之后添加一些代码来执行特定操作,如果其中任何一个失败:
class testClass : XCTestCase
{
func testSomething()
{
let someComputedValue1 = func1()
let someComputedValue2 = func2()
XCTAssertLessThanOrEqual(someComputedValue1, 0.5)
XCTAssertLessThanOrEqual(someComputedValue2, 0.2)
if anyOfTheAboveAssertionsFailed {
performAction()
}
}
}
我想要提示的部分是anyOfTheAboveAssertionsFailed
条件,而没有重复与硬编码值的比较。
答案 0 :(得分:1)
虽然使用自己的断言方法解决了PO的问题,但如果需要使用多个XCAssert方法,这很麻烦。
另一种方法是覆盖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
}
}
答案 1 :(得分:0)
你当然可以写一个新功能......
func assertLessThanOrEqual(value: Double, limit: Double) -> Bool {
XCTAssertLessThanOrEqual(value, limit)
return value <= limit
}
然后写下你的测试......
var allGood = true
allGood = allGood && assertLessThanOrEqual(someComputedValue1, 0.5)
allGood = allGood && assertLessThanOrEqual(someComputedValue2, 0.2)
if !allGood {
performAction()
}