Ich schrieb Komponententest. Eine Methode ist markiert, die nur iOS 9v unterstützt. Aber einige Methoden, die mit @available (iOS 9.0, *) markiert sind, werden auf Geräten mit iOS 8.4.1 ausgeführt. Wenn diese Methode ausgeführt wird, wird die Ausführung des Komponententests abgebrochen.Methoden mit @available (iOS 9.0, *) wird auf 8.x ausgeführt
Warum Unit Test Ausführen foo() -Funktion auf iOS 8.x, wenn es für iOS 9.x markiert ist?
@available(iOS 9.0, *)
class func foo() {
// Some code...
if !TargetUtility.isRunningSimulator {
// Crash happens when executed on iOS 8.4.1
parameters[kSecAttrTokenID] = kSecAttrTokenIDSecureEnclave
}
}
// In the test file:
@available(iOS 9.0, *)
func testFoo() {
MyClass.foo()
}
Ich denke, dass das Testframework '@ available' für Testspezifikationen nicht berücksichtigt. Dann würde es einfach 'MyClass.foo()' aufrufen, was es zum Absturz bringen würde. Könnten Sie versuchen, "@ available" in den Methodenkörper zu verschieben, z. 'guard #available (iOS 9.0, *) elder return'? – Sulthan
@Sultan Sie haben Recht. Könnten Sie Ihre Antwort posten? – Ramis