8

アプリの向き変更(縦/横)をテストする機能をテストしたいと思います。私は現在KIFを使用しています。私が知る限り、これはできません。 iOSシミュレータのプログラムで回転イベントをシミュレートする方法はありますか?テスト目的のためにiOSの方向変更をシミュレートする

これは、ドキュメント化されていないプライベートAPIまたはハックなのかどうかは、テスト中にのみ実行され、本番ビルドには含まれないため、気にしません。

答えて

9

は、これを達成するためのステップです:

+ (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; 
          }]; 
} 

注:テーブルの上に平らにあなたのデバイスを維持するか、加速度計の更新はバックビューを回転します。

+0

これはシミュレータでは動作しません。私はデバイスを持っていないので、それをテストしていませんが、KIFテストはVaxSimを介してシミュレータ上で実行されるため、シミュレータ上で実行する必要があります。これがシミュレータで実行されるかどうかを確認してください。 iOS 6.1シミュレータを使用しています。 – applefreak

+0

私の悪い!アプリが問題の方向付けをサポートしている場合にのみ機能します。 – applefreak

0

私はあなたが「プログラム的に」ということを知らないのですが、Appleが提供するUIAutomationライブラリをInstrumentアプリケーションのAutomationテンプレートとともに使用すると、iPhoneでサポートされているさまざまな向きをシミュレートできます。

+0

本当に、私もこれを発見しました。私はObjective-Cでアプリ自体の中からやり遂げる方法を探しています。それがKIFテストフレームワークの仕組みです。 –

-2

プログラマチックにはなぜですか? Simulatorはあなたが望むものを正確に実行し、アプリケーションが姿勢の変化を処理する能力をテストします。

シミュレータでは、ハードウェア>左/右回転のいずれかのメニューを使用するか、コマンドを押しながら左右の矢印を使用します。ここで

+3

ビルドサーバーに自分の介入なしで実行される自動化されたUIテストを実行したいので、プログラムで行う必要があります。 –

4

UIオートメーションの方向変更をシミュレートするには、UIATargetにsetDeviceOrientationメソッドを使用できます。例:

UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT); 

メソッドには、1つのパラメータ 'deviceOrientation'定数が必要です。 詳細情報here

この100%は、実際のiOSデバイスで動作します。私はシミュレータについては分かりません。

+0

あなたが提案するものは、UIオートメーションツールから実行する必要があるものです。それは私のために働くつもりはありません。私はアプリ内から呼び出すことができるObjective Cコードが必要です。それがKIFテストフレームワークの仕組みです。それを十分にはっきりさせないと申し訳ありません。 –

関連する問題