2013-12-16 18 views
5

Tôi đang viết một số thử nghiệm chấp nhận hộp đen chạy trên thiết bị Android vật lý. Ứng dụng được kiểm tra (AUT) dựa trên bản xem trước của máy ảnh. Cụ thể, nó sử dụng phương thức setOneShotPreviewCallback của lớp android.hardware.Camera. Tôi đang tìm cách chèn một hình ảnh xem trước giả để kiểm tra hành vi của ứng dụng.Android: Đưa vào xem trước máy ảnh giả cho mục đích thử nghiệm

Tôi nghĩ mình có thể đánh lừa đối tượng Camera bằng mã kiểm tra gọi đối tượng PreviewCallback của AUT, nhưng không may, biến mẫu mPreviewCallback là riêng tư đối tượng Camera và do đó mã thử nghiệm của tôi không có cách nào để tham chiếu đến PreviewCallback đối tượng. Một cách khác tôi đã nghĩ đến là gửi Message đến máy ảnh EventHandler, nhưng một lần nữa, trường mEventHandler là riêng tư, vì vậy mã kiểm tra không có cách nào để có được tham chiếu đến Trình xử lý.

+1

Tôi nghĩ rằng đề xuất này có thể phá vỡ quy tắc thiết bị vật lý của bạn nhưng có thể chạy trên genymotion có thể đạt được lừa bạn mong muốn. http://www.genymotion.com/features/ – Machinarius

+0

Thiết bị của bạn có được root không? –

+0

@Machinarius: Tôi đã theo dõi gợi ý của bạn và đã cài đặt genymotion. Mặc dù nó là một phần mềm tốt, tôi không thể tìm thấy cách để chèn một hình ảnh theo chương trình vào luồng xem trước của máy ảnh. Có vẻ như các hành động genymotions duy nhất cho phép là kết nối luồng video vật lý của tôi với máy ảnh mô phỏng. Tôi đã bỏ qua một cái gì đó? – lacton

Trả lời

0

Vui lòng xem Android mock CameraHow to mock a picture in Android Emulator Camera? Cả hai phương pháp đều không cần thiết bị gốc nhưng yêu cầu thay đổi ứng dụng. Tôi tin rằng bạn có thể thực hiện sửa đổi cần thiết ngay cả khi bạn không có quyền truy cập vào mã nguồn, bằng cách giải mã dex.

+0

Câu hỏi đầu tiên (Máy ảnh mô phỏng Android) gợi ý sử dụng Mockito để giả lập lớp Camera. Tuy nhiên, [docock chính thức doc] (http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html) nói rằng "Mockito không thử phương pháp cuối cùng". Hầu hết các phương pháp của Camera là cuối cùng, có vẻ như mocking Camera không phải là một lựa chọn. – lacton

+0

Các phương thức cuối cùng như [setOneShotPreviewCallback()] (http://developer.android.com/reference/android/hardware/Camera.html#setOneShotPreviewCallback (android.hardware.Camera.PreviewCallback)) chỉ là các trình bao bọc mỏng xung quanh các phương thức gốc. Bạn có thể tạo lớp Camera giả lập sẽ tải một thư viện gốc thay thế để thực hiện phương thức này. –

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