2017-02-01 7 views
1

私はiPhoneとiPadsに対して実行されるiOSテストを実行しています。アプリはどちらのデバイスでもわずかに異なりますので、どのテストを実行するかを区別する方法が必要です。私はIDevice.IsPhoneまたはIDevice.IsTabletプロパティがあることがわかりますが、これらはプライベートなのでアクセスできません。Xamarin UIテストでapp.Device.IsPhoneを使用できないのはなぜですか

使用しているデバイスやインターフェイスのプロパティにアクセスする方法を簡単に見つける方法はありますか?

[SetUp] 
    public void BeforeEachTest() 
    { 
     app = AppInitializer.StartApp(platform); 
    } 

    public bool DeviceIsiPad() 
    { 
     var device = app.Device; 
     if (device.IsTablet) 
     { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
+0

'app'の種類は何ですか? – Krumelur

+0

あなたはどのナゲットパッケージを使用していますか? – valdetero

+0

@valderteroナゲットパッケージを使用していません – Teague

答えて

0

私は以下を使用して終了しました。私はそれが時代遅れであることを知らせる警告を受け取り、デバイスを使用するが、それでも動作する:

bool isPhone = ((Xamarin.UITest.iOS.iOSApp)app).Config.IsPhone; 
1

あなたはConfigureApp.iOS.StartApp()から入手​​型のインスタンス変数にIApp.Device.IsPhone(& .IsTablet)プロパティにアクセスすることができます。

[TestFixture] 
public class Tests 
{ 
    iOSApp app; 

    [SetUp] 
    public void BeforeEachTest() 
    { 
     app = ConfigureApp.iOS.StartApp(); 
    } 

    [Test] 
    public void ViewIsDisplayed() 
    { 
     AppResult[] results = null; 
     if (app.Device.IsPhone) 
     { 
      results = app.WaitForElement(c => c.Child("UIView")); 
     } 
     if (app.Device.IsTablet) 
     { 
      results = app.WaitForElement(c => c.Child("UIView")); 
     } 
     app.Screenshot("First screen."); 
     Assert.IsTrue(results.Any()); 
    } 
} 
+0

Device.IsPhone "Xamarin.UITest.IDevice"に次のエラーが発生しました: 'IsPhone 'の定義がなく、拡張メソッド' IsPhone'が含まれていません。 「Xamarin.UITest.IDevice」タイプのファイルが見つかりました。アセンブリ参照がありませんか? – Teague

+0

@Teague間違った変数を使用しているように、アプリ変数を取得する方法を質問に追加する必要があります。 – SushiHangover

+0

元の質問にコードを追加しました – Teague

関連する問題