2011-12-20 19 views
6

La nostra applicazione Android sta diventando abbastanza grande e vorremmo utilizzare test funzionali per la nostra applicazione per prevenire la regressione. Stiamo cercando opzioni per raggiungere questo obiettivo.test funzionale Android; invia geo posizione all'emulatore

facciamo uso di luoghi geo, così ora ci prova l'applicazione inserendo latitudine/longitudine in DDMS. Se vogliamo testare questo, dovrebbe essere possibile impostare queste posizioni geografiche a livello di codice.

C'è un quadro che possiamo utilizzare per test funzionale nostra applicazione per Android e anche inviare questi aggiornamenti al nostro emulatore?

risposta

4

Sto affrontando lo stesso problema. Sebbene questa soluzione non sia integrata in robotium, dovresti essere in grado di trasformarla in un'utilità che può essere utilizzata nei test di unità.

Unit Testing Location Service

6

Se si compila in Eclipse, è possibile falsificare l'lat/lon nell'emulatore Android:

  • di Windows> Apri prospettiva> Altro.
  • Scegliere DDMS
  • Ricerca Emulator scheda di controllo
  • Utilizzare il controllo posizione per inviare Latitudine e longitudine ogni volta che vuoi.
+0

usiamo DDMS già di impostare manualmente, ma noi vogliamo essere in grado di impostarlo dopo la nostra applicazione viene avviata dal programma. È possibile con monkeyrunner inviare comandi ADB, ma esiste un comando ADB per inviare una posizione? – jgeerts

+1

Bene, è possibile impostarlo manualmente: 1º Se si dispone di un aggiornamento tramite posizione GPS, commentarlo. 2º scrivere una funzione per impostare la posizione, creare nuovi android.location.location classe, myclasslocation.setLatitude (latitudine) 3º Avviare la funzione premendo un pulsante, in una finestra di dialogo o di una nuova attività, si può mettere l'intento in un'optionmenu. – vgonisanz

+0

che potrebbe funzionare, ma non voglio cambiare il mio codice per fare un lavoro di test, fa esiste una soluzione entro monkeyrunner/robotium o androidrunner a invece di inviare testo a un campo di testo, l'invio di geolocalizzazione per l'emulatore? – jgeerts

0

Se si utilizza monkeyrunner, allora si potrebbe utilizzare questa funzione:

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) 

non riuscivo a trovare un modo per ottenere la porta dell'emulatore dal MonkeyDevice, così ho passare manualmente la porta , ma sarebbe bello se potessimo capire dall'oggetto dispositivo