Как ускорить тестовые случаи UI в Xcode?
с Xcode 7 у нас есть хороший API для тестирования пользовательского интерфейса. В основном я доволен. Единственная проблема связана со скоростью.
в начале обычный тестовый случай пользовательского интерфейса (около 15 действий) выполнялся примерно 25 секунд. Затем я полностью высмеял нетворкинг. Теперь это занимает 20 секунд. Учитывая тот факт, что время занимает только анимация и время запуска (1 секунда или даже меньше), я предполагаю, что должен быть способ ускорить его вверх.
4 ответов
попробуйте установить это свойство при запуске тестов пользовательского интерфейса:
UIApplication.shared.keyWindow?.layer.speed = 100
вот как я его установил:
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if ProcessInfo.processInfo.arguments.contains("UITests") {
UIApplication.shared.keyWindow?.layer.speed = 100
}
}
и в моих тестах интерфейса:
class MyAppUITests: XCTestCase {
// MARK: - SetUp / TearDown
override func setUp() {
super.setUp()
let app = XCUIApplication()
app.launchArguments = ["UITests"]
app.launch()
}
}
есть еще несколько полезных советов в этом блоге.
еще одна возможность-отключить анимацию вообще:
[UIView setAnimationsEnabled:NO];
Swift 3:
UIView.setAnimationsEnabled(false)
следующий ответ @Mark,Swift 3 версия:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if ProcessInfo.processInfo.arguments.contains("UITests") {
UIApplication.shared.keyWindow?.layer.speed = 200
}
}
на вас ui тестовый файл:
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
let app = XCUIApplication()
app.launchArguments = ["UITests"]
app.launch()
добавить его в didFinishLaunch
[UIApplication sharedApplication].keyWindow.layer.speed = 2;
значение по умолчанию-1, сделайте его 2, чтобы удвоить его скорость.