gpt4 book ai didi

Swift XCTest 和断言

转载 作者:搜寻专家 更新时间:2023-11-01 07:30:01 26 4
gpt4 key购买 nike

我正在使用 Swift2。

假设我有一个函数:

func divide(x x:Int, y:Int) -> Double? {
assert(y != 0)

if (y == 0) {
return nil
} else {
return (Double(x)/Double(y))
}
}

出于调试目的,我想使用断言,这样我就可以看到何时在此函数中传递 y = 0。

我也想在生产中有一个解决方法(我不想崩溃,只是通知用户),他不能除以 0。我有一个测试:

let res = divide(5, 0)
XCTAssert(res == nil)

但我没有完成测试,而是在 divide 函数的断言上得到了 EXC_BAD_ACCESS

我可以以某种方式为测试禁用断言吗?

最佳答案

一种选择是向可用于绕过断言的函数添加默认参数:

func divide(x x:Int, y:Int, safe:Bool=true) -> Double? {
if safe {
assert(y != 0)
}

if (y == 0) {
return nil
} else {
return (Double(x)/Double(y))
}
}

在您的应用中,您将继续使用 xy 参数调用它

divide(5, 0)

你会得到一个断言。

在您的测试中,您可以使用 safe 参数作为 false 调用它,这将绕过断言并允许您使用 XCTAssert结果:

let res = divide(5, 0, false)
XCTAssert(res == nil)

关于Swift XCTest 和断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33142923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com