Как ускорить тестовые случаи 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, чтобы удвоить его скорость.