2011/08/21

nativedriver for iOS で実機 UIテスト

1.プロジェクト設定の修正と実機実行
現在の nativedriver の配布では、テスト対象アプリ SampleApp の Automation ターゲットは、実機用にビルドできないようです。依存関係にある nativedriver.xcodeproj と CocoaHTTPServerLibrary.xcodeproj が、SampleApp のプロジェクト設定と齟齬があるためです。ビルド可能な設定を以下に示します。
nativedriver.xcodeprojの設定



CocoaHTTPServerLibrary.xcodeprojの設定



 要点は、SampleAppプロジェクトの Architectures, Base SDK, Build Active Architecture Onlyの箇所と、nativedriver、CocoaHTTPServerLibraryのそれらが食い違っているので、SampleAppプロジェクトと同じにします。
これで、ビルドに必要な設定は、完了しているので、Code Signの設定等が正しくされていれば、実機デバイスへ転送してSampleAppを実行できます。

2.テストの修正と実行
SampleApp用のテストケースのEclipseプロジェクトを前回作りましたが、実機を対象にUIテストする場合には、1箇所修正する必要があります。nativedriver は、テスト対象アプリを HTTP サーバとして、テストケースを含むテストアプリが HTTP クライアントとして接続して、UIテストを実行します。テスト対象がシミュレータ上のアプリの場合、nativedriver は、同一マシン上にあるため、ローカル・ループバック・アドレス(127.0.0.1)を使って、接続するようになっています。このとき、NativeDriverTest.javaの nativedriver の初期化は、以下のようにデフォルト値で行われています。 

public void testNativeDriver() throws Exception {
WebDriver driver = new IosNativeDriver();

 この箇所にテスト対象を転送した実機のIPアドレスを設定することになります。 nativedriver は、ポート3001を使用し、HTTPサーバのディレクトリのエントリはhubとなっているので、実機IPアドレスが 192.168.0.64 の場合、以下のようになります。

public void testNativeDriver() throws Exception {
WebDriver driver = new IosNativeDriver("http://192.168.0.64:3001/hub");
 シミュレータでのテストと同様に、実機上のテスト対象アプリ SampleApp (Automationというアプリ名になっている)を起動しておいて、テストをJUnit Test として実行すれば、UIテストが実行されます。

注)実機がLAN上にないとnativedriverから接続できませんので、iPhoneをWiFi接続しておく必要があります。また、そのときのIPアドレスは、iPhone上で設定アプリから容易に知ることができます。

0 件のコメント:

コメントを投稿