2011-12-20 62 views
6

Ứng dụng android của chúng tôi đang nhận được khá lớn và chúng tôi muốn sử dụng các kiểm tra chức năng cho ứng dụng của chúng tôi để ngăn chặn hồi quy. Chúng tôi đang tìm kiếm các tùy chọn để đạt được điều này.Kiểm tra chức năng Android; gửi vị trí địa lý đến trình giả lập

Chúng tôi sử dụng vị trí địa lý, vì vậy bây giờ chúng tôi kiểm tra ứng dụng bằng cách nhập lat/long trong DDMS. Nếu chúng tôi muốn kiểm tra điều này, bạn có thể đặt các vị trí địa lý này theo lập trình.

Có một khuôn khổ mà chúng tôi có thể sử dụng để thử nghiệm chức năng ứng dụng android của chúng tôi và cũng gửi các bản cập nhật này cho trình mô phỏng của chúng tôi không?

Trả lời

4

Tôi đang đối mặt với cùng một vấn đề. Trong khi giải pháp này không được xây dựng thành robot, bạn sẽ có thể biến nó thành một tiện ích có thể được sử dụng trong các bài kiểm tra đơn vị của bạn.

Unit Testing Location Service

6

Nếu bạn biên dịch trong Eclipse, bạn có thể giả mạo các lat/lon trong giả lập android:

  • Windows> Open Perspective> Khác.
  • Chọn DDMS
  • tab kiểm soát Search Emulator
  • Sử dụng điều khiển vị trí để gửi Latitude và Longitude bất cứ khi nào bạn muốn.
+0

chúng tôi sử dụng DDMS để cài đặt theo cách thủ công, nhưng chúng tôi muốn có thể đặt nó sau khi ứng dụng của chúng tôi khởi động chương trình. Có thể với monkeyrunner gửi các lệnh ADB, nhưng có một lệnh ADB để gửi một vị trí không? – jgeerts

+1

Vâng, bạn có thể đặt cài đặt thủ công: 1º Nếu bạn đã cập nhật theo vị trí GPS, hãy nhận xét nó. 2º Viết hàm để đặt vị trí, tạo lớp mới android.location.location, myclasslocation.setLatitude (vĩ độ) 3º Khởi chạy hàm đẩy nút, trong Hộp thoại hoặc hoạt động mới, bạn có thể đặt ý định trong menu tùy chọn. – vgonisanz

+0

Điều đó có thể hoạt động, nhưng tôi không muốn thay đổi mã của mình để thực hiện công việc thử nghiệm, có tồn tại giải pháp trong monkeyrunner/robotium hoặc androidrunner thay vì gửi văn bản tới một trường văn bản, gửi vị trí địa lý đến trình giả lập không? – jgeerts

0

Nếu bạn sử dụng monkeyrunner, sau đó bạn có thể sử dụng chức năng này:

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) 

tôi không thể tìm thấy một cách để có được cổng của giả lập từ MonkeyDevice, vì vậy tôi tự vượt qua cổng , nhưng sẽ đẹp hơn nếu chúng ta có thể tìm ra từ đối tượng thiết bị

Các vấn đề liên quan