2011-12-20 7 views
6

アンドロイドのアプリケーションがかなり大きくなっており、アプリケーションの機能テストを使用して回帰を防止したいと考えています。私たちはこれを達成するためのオプションを探しています。Androidの機能テスト。ジオロケーションをエミュレータに送信する

ジオロケーションを利用するので、DDMSにlat/longと入力してアプリをテストします。これをテストしたい場合は、これらのジオロケーションをプログラムで設定することが可能でなければなりません。

アンドロイドアプリの機能テストに使用できるフレームワークはありますか?これらのアップデートもエミュレータに送信しますか?

答えて

4

私は同じ問題に直面しています。このソリューションは、ロボティクスに組み込まれていませんが、ユニットテストで使用できるユーティリティにする必要があります。

Unit Testing Location Service

6

あなたはEclipseでコンパイルする場合、あなたはアンドロイドのエミュレータで緯度/経度フェイクことができます:その他>

  • のWindows>パースペクティブを開きます。
  • いつでも好きなときに検索エミュレータコントロールタブ
  • は、緯度と経度を送信するために、位置制御を使用しDDMS
  • を選択してください。
+0

私たちはDDMSを使って手動で設定していますが、アプリケーションで起動した後に設定できるようにしたいと考えています。 monkeyrunnerはADBコマンドを送ることは可能ですが、場所を送信するADBコマンドがありますか? – jgeerts

+1

さて、あなたは手動で設定することができます: 1ºGPSによる更新がある場合は、コメントしてください。 2º位置を設定し、新しいクラスを作成し、新しいクラスを作成します。android.location.location、myclasslocation.setLatitude(latitude) 3ºボタンを押す機能を起動します。ダイアログや新しいアクティビティで、インテントをオプションメニューに入れます。 – vgonisanz

+0

それはうまくいくかもしれませんが、私はテスト作業をするために自分のコードを変更したくないのですが、monkeyrunner/robotiumやandroidrunnerの中に、テキストをテキストフィールドに送る代わりに、 – jgeerts

0

あなたはmonkeyrunnerを使用する場合は、この機能を使用する場合があります:私はMonkeyDeviceからエミュレータのポートを取得する方法を見つけることができませんでしたので、私は手動でポートを渡す

def telnet(host, port): 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.settimeout(2) 

    # connect to remote host 
    try : 
     s.connect((host, port)) 
    except : 
     print 'Unable to connect' 
     sys.exit() 

    print 'Connected to remote host' 
    return s 

def geo_fix(port, lat, lng): 
    print "setting gps to " + str(lat) + "," + str(lng) 
    socket = telnet("localhost", port) 
    socket.send("geo fix " + str(lng) + " " + str(lat) + "\n") 
    socket.send("exit\n") 
    socket.close() 

geo_fix(5554, 32.0878802, 34.797246) 

関連する問題