Вспомогательной информации о самом XCTest очень мало, и мне было трудно ее найти. Я также искал ту же функциональность и, наконец, смог заставить ее работать.
Я нахожусь на XCode 10.1 и работаю на реальном iPhone с iOS 11. Я уверен, что общая техника будет работать для других версий, но, вероятно, потребуется несколько настроек.
Общие шаги описаны в этом ответе stackoverflow, но для работы на настоящем iPhone мне потребовалось несколько дополнительных шагов и настроек:
Можно ли запустить тесты XCTest в приложении для iOS?
Следуйте инструкциям, приведенным выше. Приведенные ниже шаги являются отклонениями от тех инструкций, которые были мне необходимы.
Скопируйте в платформу XCTest, как описано в приведенной выше ссылке. ПРИМЕЧАНИЕ. Используйте каркас для платформы iPhone.OS
, а не симулятор, как описано. Вы можете найти этот файл фреймворка внутри самого пакета XCode Application на вашем Mac. (Щелкните правой кнопкой мыши, «Показать содержимое пакета», затем посмотрите ./Contents/Developer/Platforms/iPhoneOS.platform
Отключить битовый код в целевом приложении. Это решает ошибку компоновщика. Вот пример его включения: как ENABLE_BITCODE в xcode 7?
При перетаскивании файла XCTest.framework
в связанные двоичные файлы вашей цели убедитесь, что вы также перетаскиваете его во «Встроенные двоичные файлы», который находится непосредственно над параметром «Связанные фреймворки и библиотеки». Если вы этого не сделаете, вы получите ошибку во время выполнения.
- Код ViewController для запуска тестов немного отличается в новом Swift, вот что я использую:
import UIKit
import XCTest
class ViewController: UIViewController {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("running tests!")
let suite = XCTestSuite.default;
for test in suite.tests {
test.run()
}
}
}
Так и должно быть! Когда я запускаю вышеупомянутое приложение, затем касаюсь экрана, все тесты из моей цели UITesting проходят без сбоев и проходят!