Я бы хотел, чтобы модульный тест выполнялся только для данной версии iOS или выше, но атрибут @available
, похоже, совсем не работает с методами XCTest: - (
Например, Я вообще не могу отключить тест, используя любое изменение ключевого слова * 1004. * Тест всегда выполняется независимо от того, определен ли @available
для класса или функции, использует unavailable
или что-либо еще. Например ...
// Still runs on iOS
@available(iOS, unavailable)
class SomeTests: XCTestCase {
func testSomething() {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
// Still runs on iOS
class SomeTests: XCTestCase {
@available(iOS, unavailable)
func testSomething() {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
Я могу достичь того, что хочу, с помощью приведенного ниже, но это не очень практично для большого количества тестов, подвержено ошибкам, определяется во время выполнения и методы тестирования по-прежнему выполняются и показывать как успех (что на самом деле не так).
class SomeTests: XCTestCase {
func testSomething() {
if #available(iOS 10.0, *) {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
}
Я не думаю, что макрос препроцессора #if os(...)
может помочь, потому что не может выполнить проверку версии.
Есть ли другой способ добиться того, чего я хочу? Я что-то не так делаю с @available
(или, может быть, это просто ошибка)?