2016-05-17 6 views
13

С Xcode 7 у нас есть хороший API для тестирования пользовательского интерфейса. В основном я доволен этим. Единственная проблема связана со скоростью.Как ускорить тестовые примеры UI в Xcode?

В начале обычный тестовый пример UI (около 15 действий) пробежал приблизительно 25 секунд. Затем я полностью издевался над сетью. Теперь требуется 20 секунд. Учитывая тот факт, что время берется только анимацией и временем запуска (1 секунда или даже меньше), я полагаю, должен быть способ ускорить его.

ответ

14

Попробуйте установить это свойство, когда тесты пользовательского интерфейса запуска:

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() 
    } 
} 

Там в несколько более удобные советы в этом blog post.

+0

Спасибо за ответ. Оно работает! Чтобы немного улучшить его: можно ли увеличить скорость анимации в процессе тестирования пользовательского интерфейса? –

+0

Нет, к сожалению. Процесс тестирования ui должен быть полностью отделен от вашего приложения (и только взаимодействовать через доступность и аргументы запуска). – Mark

+1

@ArtemStepanenko вы можете увеличить скорость анимации из процесса тестирования пользовательского интерфейса, используя [SBTUITestTunnel] (https://github.com/Subito-it/SBTUITestTunnel). Мы разработали эту библиотеку, чтобы обеспечить взаимодействие между приложением и тестовой целью. –

3

Другая возможность заключается в том, чтобы отключить анимацию на всех:

[UIView setAnimationsEnabled:NO]; 
+1

Это потрясающе! Большое спасибо, что поделились. Теперь мой тестовый набор работает со скоростью света. –

+4

Вы не должны полностью отключать анимацию, так как вам не удастся поймать некоторые ошибки, связанные с анимацией. Проверьте этот [большой блог] (https://pspdfkit.com/blog/2016/running-ui-tests-with-ludicrous-speed) сообщение для получения дополнительной информации. –

3

После @Mark ответа, Swift 3 версия:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    if ProcessInfo.processInfo.arguments.contains("UITests") { 
     UIApplication.shared.keyWindow?.layer.speed = 200 
    } 
} 

На вас щ тестовый файл:

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() 
1

Добавить это в DidFinishLaunch

[UIApplication sharedApplication].keyWindow.layer.speed = 2; 

Значение по умолчанию равно 1, что делает его 2 для удвоения его скорости.

+1

Можете ли вы объяснить, почему ваше решение лучше, чем другие? –

Смежные вопросы