2012-01-02 13 views
0

私は現在、AppleのUIAutomation APIを使用して、javascriptで書かれた多くの機能テストを行っています。テストはiPhone向けに書かれていますが、アプリケーションはiPadもサポートしています。機能テストが実行されているiOSデバイスを検出するにはどうすればよいですか?

私のテストをiPad上で実行するように拡張するには、コードを調整する必要がありますが、まずどのデバイスがテストを実行しているかを調べる必要があります。

どのデバイス/シミュレータがテストを実行しているかを検出するにはどうすればよいですか?私はオートメーションツールからjavascriptテストを実行しています。

+0

ファイルでありますコードがあればそれをどのように呼び出すのですか? –

+0

インターフェイスはおそらく私が探しているものです。私はXcodeのオートメーションツールを使用して、Appleが指示したとおりにスクリプトファイルをロードしています。私の知る限り、これはあなたのアプリをテストする正式にサポートされている方法です。 http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html#//apple_ref/doc/uid/TP40009903 – MdaG

答えて

1

UIATarget.localTarget()。model()は、テストが実行されているデバイスに関する情報を保持します。

私はAlex Vollmer's tuneup_js libraryを発見しました。これは、デバイスの独立したコードをある程度まで可能にします。

例えば)

test("my test", function(target, app) { 
    assertWindow({ 
    "navigationBar~iphone": { 
     leftButton: { name: "Back" }, 
     rightButton: { name: "Done" } 
    }, 
    "navigationBar~ipad": { 
     leftButton: null, 
     rightButton: { name: "Cancel" } 
    }, 
    }); 
}); 

編集tuneup_jsに、次の発見

:私は、デバイス固有のコードを書くことができるでしょうこれらにより

/** 
    * A convenience method for detecting that you're running on an iPad 
    */ 
    isDeviceiPad: function() { 
     return this.model().match(/^iPad/) !== null; 
    }, 

    /** 
    * A convenience method for detecting that you're running on an 
    * iPhone or iPod touch 
    */ 
    isDeviceiPhone: function() { 
     return this.model().match(/^iPhone/) !== null; 
    } 

1

がここに提供されるドキュメントに従ってください、あなたはすべての情報を取得します..など//ここで私は、デバイス名を取得するために使用していたスクリプト、OSのバージョン、バンドルIDは、ターゲット https://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIATargetClassReference/UIATargetClass/UIATargetClass.html

ここで
#import "tuneupjs/Utilities.js" 
var target = UIATarget.localTarget(); 

var app_bundle_id = target.frontMostApp().bundleID(); 
UIALogger.logDebug("App Bundle Id : " + app_bundle_id); 

if(app_bundle_id.strContains("ShazamDev")) 
    UIALogger.logDebug("Running UIA Scripts for ShazamDev"); 

var device_name = target.name(); 
UIALogger.logDebug("Phone Name : " + target.name()); 

var device_model = target.model(); 
UIALogger.logDebug("Device Model: " + device_model); 

//UIALogger.logDebug("System Name: " + target.systemName()); 

var ios_version = target.systemVersion(); 
UIALogger.logDebug("IOS Version: " + ios_version); 
0

私のユーティリティでStrContainsメソッドのコードは、あなたはJavascriptのテストとしてこれをやっている場合は、あなたに任意のObjective Cのインターフェイスがある

String.prototype.strContains = function(value, ignorecase) { 
    if (ignorecase) { 
     return (this.toLowerCase().indexOf(value.toString().toLowerCase()) != -1); 
    } 
    else { 
     return this.indexOf(value) != -1; 
    } 
}; 
関連する問題