2016-05-17 64 views
13

Xcode 7'dan beri UI testi için güzel bir API'mız var. Çoğunlukla bununla tatmin oldum. Tek endişe hız ile ilgilidir. Başlangıçta sıradan bir UI test durumu (yaklaşık 15 eylem) yaklaşık olarak 25 saniye koştu. Sonra ağa tamamen ağladım. Şimdi 20 saniye alır. Zamanın sadece animasyonlar ve bir başlatma zamanı (1 saniye ya da daha az) ile alındığı düşünüldüğünde, bunu hızlandırmanın bir yolu olması gerektiğini düşünüyorum. UI testleriXcode'ta UI test senaryoları nasıl hızlandırılır?

cevap

14

bu özelliği ayarlamayı deneyin çalıştırdığınızda:

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

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

Ve UI testlerinde

:

class MyAppUITests: XCTestCase { 

    // MARK: - SetUp/TearDown 

    override func setUp() { 
     super.setUp() 

     let app = XCUIApplication() 
     app.launchArguments = ["UITests"] 
     app.launch() 
    } 
} 

bir kaç tane var bunu nasıl oluşturduğuna

İşte
UIApplication.shared.keyWindow?.layer.speed = 100 

var Bu blog post'da daha kullanışlı ipuçları.

+0

Cevabınız için teşekkürler. İşe yarıyor! Bunu iyileştirmek için: UI test sürecinden animasyon hızını arttırmak mümkün mü? –

+0

Maalesef yok. UI test sürecinin, uygulamanızdan tamamen farklı olması (ve yalnızca erişilebilirlik ve başlatma argümanları aracılığıyla etkileşim kurması) amaçlanmıştır. – Mark

+1

@ArtemStepanenko UI test sürecinden [SBTUITestTunnel] (https://github.com/Subito-it/SBTUITestTunnel) kullanarak animasyon hızını artırabilirsiniz. Uygulama ve test hedefi arasında iletişim kurmak için bu kütüphaneyi geliştirdik. –

3

başka olasılık hiç animasyonlar devre dışı bırakmaktır: @ Mark cevap takiben

[UIView setAnimationsEnabled:NO]; 
+1

Bu harika! Paylaştığın için çok teşekkürler. Test takımım şimdi ışık hızında çalışıyor. –

+4

Animasyonlarla özellikle bağlantılı bazı hataları yakalayamayacağınız için animasyonları tamamen devre dışı bırakmamalısınız. Daha fazla bilgi için bu [harika blog] 'a (https://pspdfkit.com/blog/2016/running-ui-tests-with-ludicrous-speed) bakın. –

3

, Swift 3 sürümü:

size Açık
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

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

ui test dosyası:

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

Bunu içinde oluşturdu: didFinishLaunch

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

Varsayılan değer 1'dir, 2 hızını ikiye katlayın.

+1

Çözümünüzün neden diğerlerinden daha iyi olduğunu açıklayabilir misiniz? –