你如何为具有前提条件的
Swift方法编写测试?这是一个例子:
func doublePositive(n:Int) -> Int { precondition(n >= 0) return 2*n }
使用XCTAssertThrowsError不起作用:
func testDoublePositive() { XCTAssertEqual(10,testObject.doublePositive(5)) // Works XCTAssertThrowsError(testObject.doublePositive(-1)) // Breaks }
Thread 1:EXEC_BAD_INSTRUCTION (Code=EXCI386_INVOP,Subcode=0x0)
有没有办法测试Swift的前提条件?
您可以通过仅使用满足这些前提条件的输入测试行为来测试具有前提条件的Swift方法.不满足前提条件时的行为是清楚的,无需进一步测试,因为前置条件被烘焙到标准库中.
原文链接:https://www.f2er.com/swift/319057.html如果您怀疑是否已正确指定前置条件,则可以将前置条件表达式拉出为布尔函数,然后测试该函数以正确识别无效输入中的有效值.
但是,您可以为自己创建您想要的内容:
An option to generate exceptions on precondition/assertion failures would do the trick: one would turn it on in debug builds,and turn it off in release builds.
您可以编写自己的函数,比如说,需要,而不是调用Apple的前提条件.这可以有条件地编译,以按您的意愿行事.然后,您将使用此处,否则您将使用前置条件.