Birim testi yazdım. Yalnızca iOS 9v'yi destekleyen bazı yöntemler işaretlenir. Ancak, iOS 8.4.1 olan cihazda @available (iOS 9.0, *) ile işaretlenmiş bazı yöntemler çalıştırılır. Bu yöntem çalıştırıldığında birim test yürütmesi çöküyor.@ Kullanılabilir yöntemler (iOS 9.0, *) 8.x üzerinde çalıştırılır.
Neden birim testi iOS 9.x için işaretlendiğinde iOS 8.x'te foo() işlevi yürütülüyor?
@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()
}
Test çerçevesinin, test tanımları için 'mevcut 'olduğunu onaylamadığını düşünüyorum. Sonra sadece çökmesini sağlayacak 'MyClass.foo()' yi çağırırdı. "Kullanılabilir" i, yöntem gövdesine, örneğin koruma #available (iOS 9.0, *) başkaları geri döndü? – Sulthan
@Sulthan Haklısınız. Cevabınızı gönderir misiniz? – Ramis