简体   繁体   中英

Android functional test; send geo location to emulator

Our android application is getting fairly big and we would like to use functional tests for our application to prevent regression. We are looking in to options to achieve this.

We make use of geo locations, so now we test the app by entering lat/long in DDMS. If we want to test this, it should be possible to set these geo locations programmatically.

Is there a framework that we can use to functional test our android app and also send these updates to our emulator?

If you compile in Eclipse, you can fake the lat/lon in the android emulator:

  • Windows > Open perspective > Other.
  • Choose DDMS
  • Search Emulator control tab
  • Use the location control to send Latitude and Longitude whenever you want.

I am facing the same problem. While this solution is not built into robotium, you should be able to make it into a utility that can be used in your unit tests.

Unit Testing Location Service

If you use monkeyrunner, then you might use this function:

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)

I couldn't find a way to get the emulator's port from the MonkeyDevice, so I manually pass the port, but would be nicer if we could figure it out from the device object

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM