8

Ich möchte die Fähigkeit meiner App testen, mit Orientierungsänderungen (Hoch-/Querformat) umzugehen. Ich verwende derzeit KIF und soweit ich weiß, kann es das nicht tun. Gibt es eine Möglichkeit, die Rotationsereignisse programmatisch für den iOS-Simulator zu simulieren?Simulieren von Orientierungsänderungen in iOS für Testzwecke

Es ist mir egal, ob es sich um eine undokumentierte private API oder einen Hack handelt, da dies nur während des Tests ausgeführt wird und nicht Bestandteil von Produktions-Builds sein wird.

Antwort

9

ist hier ein Schritt, dies zu erreichen:

+ (KIFTestStep*) stepToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation { 

    NSString* orientation = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) ? @"Landscape" : @"Portrait"; 
     return [KIFTestStep stepWithDescription: [NSString stringWithFormat: @"Rotate to orientation %@", orientation] 
          executionBlock: ^KIFTestStepResult(KIFTestStep *step, NSError *__autoreleasing *error) { 
           if([UIApplication sharedApplication].statusBarOrientation != toInterfaceOrientation) { 
            UIDevice* device = [UIDevice currentDevice]; 
            SEL message = NSSelectorFromString(@"setOrientation:"); 

            if([device respondsToSelector: message]) { 
             NSMethodSignature* signature = [UIDevice instanceMethodSignatureForSelector: message]; 
             NSInvocation* invocation = [NSInvocation invocationWithMethodSignature: signature]; 
             [invocation setTarget: device]; 
             [invocation setSelector: message]; 
             [invocation setArgument: &toInterfaceOrientation atIndex: 2]; 
             [invocation invoke]; 
            } 
           } 

           return KIFTestStepResultSuccess; 
          }]; 
} 

Hinweis: Halten Sie das Gerät flach auf einem Tisch oder das Beschleunigungs-Updates wird den Blick zurück drehen.

+0

Dies scheint im Simulator nicht zu funktionieren. Ich habe kein Gerät, also habe ich es nicht getestet, aber KIF-Tests laufen auf Simulatoren über VaxSim, so dass es auf dem Simulator laufen muss. Können Sie bitte bestätigen, dass dies auf dem Simulator nicht funktioniert? Ich benutze iOS 6.1 Simulator. – applefreak

+0

Mein schlechtes! Es funktioniert nur, wenn App die Ausrichtung unterstützt! – applefreak

0

Ich weiß nicht, was Sie mit 'programmatisch' meinen, aber wenn Sie die von Apple bereitgestellte UIAutomation-Bibliothek zusammen mit der Automatisierungsvorlage der Instruments-Anwendung verwenden, können Sie verschiedene vom iPhone unterstützte Orientierungen simulieren.

+0

Richtig, ich habe das auch gefunden. Ich bin immer noch auf der Suche nach einer Möglichkeit, dies in der App selbst zu tun, in Objective-C. So funktioniert das KIF-Test-Framework. –

-2

Warum programmatisch? Der Simulator macht genau das, was Sie wollen, er testet die Fähigkeit der App, Orientierungsänderungen zu handhaben.

Verwenden Sie im Simulator entweder das obere Menü Hardware> Nach links/rechts drehen oder halten Sie den Befehl gedrückt und verwenden Sie die Pfeile nach links und rechts.

+3

Ich möchte es programmgesteuert machen, weil ich automatisierte UI-Tests haben möchte, die ohne meine Intervention auf dem Build-Server laufen. –

4

Um die Orientierungsänderung in der Benutzeroberflächenautomatisierung zu simulieren, können Sie die Methode setDeviceOrientation für UIATarget verwenden. Beispiel:

UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT); 

Methode benötigt einen Parameter 'deviceOrientation' Konstante. Weitere Informationen here

Diese 100% funktioniert auf dem echten iOS-Gerät. Ich bin mir nicht sicher über Simulator.

+0

Was Sie vorschlagen, ist etwas, das vom UI Automation Tool ausgeführt werden muss. Das wird nicht für mich funktionieren. Ich brauche Objective-C-Code, der von der App aus aufgerufen werden kann. So funktioniert das KIF-Testframework. Tut mir leid, dass ich das nicht klar genug gemacht habe. –

Verwandte Themen