Chúng tôi có một vài bài kiểm tra giao diện người dùng xung quanh chức năng máy ảnh của chúng tôi và sau khi chúng tôi thực hiện chuyển đổi từ InstrumentationTestRunner
sang AndroidJUnitRunner
như một phần của việc chuyển sang Espresso/JUnit4, chúng tôi không thể chạy nữa kiểm tra hiện đáng tin cậy do RuntimeException thường xuyên khi chúng ta gọi là getActivity()
:Thử nghiệm giao diện người dùng Android hiện có đã ngừng hoạt động sau khi chuyển sang AndroidJUnitRunner
java.lang.RuntimeException: Could not launch intent Intent { flg=0x14000000 cmp=com.cookbrite.dev/com.cookbrite.ui.ReceiptCaptureActivity (has extras) } within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? There could be an animation or something constantly repainting the screen. Or the activity is doing network calls on creation? See the threaddump logs. For your reference the last time the event queue was idle before your activity launch request was 1434471981236 and now the last time the queue went idle was: 1434471981236. If these numbers are the same your activity might be hogging the event queue.
at android.support.test.runner.MonitoringInstrumentation.startActivitySync(MonitoringInstrumentation.java:315)
at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:119)
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:106)
at com.cookbrite.step2_functional.ui.receipt.ReceiptCaptureTest.getActivity(ReceiptCaptureTest.java:43)
Đối readibility tốt hơn, đây là thông báo lỗi trên RuntimeException như một báo:
không thể khởi chạy ý định ý định {FLG = 0x14000000 cmp = com.cookbrite.dev/com.cookbrite.ui.ReceiptCaptureActivity (có tính năng bổ sung)} trong vòng 45 giây. Có lẽ chủ đề chính đã không bị nhàn rỗi trong một khoảng thời gian hợp lý? Có thể có hoạt ảnh hoặc thứ gì đó liên tục sơn lại màn hình. Hoặc hoạt động đang thực hiện cuộc gọi mạng khi tạo? Xem nhật ký threaddump. Để bạn tham khảo lần cuối cùng hàng đợi sự kiện không hoạt động trước khi hoạt động của bạn khởi chạy yêu cầu là 1434471981236 và giờ là lần cuối hàng đợi không hoạt động là: 1434471981236. Nếu các số này giống hoạt động của bạn có thể đang hoán đổi hàng sự kiện.
Thử nghiệm hiện tại của chúng tôi sử dụng Robotium. Một nỗ lực để viết cùng một thử nghiệm bằng cách sử dụng Espresso mang lại lỗi tương tự, có thể do xem trước máy ảnh liên tục cập nhật giao diện người dùng. Tuy nhiên, ngay cả khi xem trước được đặt thành INVISIBLE
, chúng tôi vẫn gặp sự cố này với Espresso.
Bất kỳ ý tưởng/con trỏ nào về cách sửa lỗi này (ngoài quay lại InstrumentationTestRunner
)?
kiểm tra robotium chạy tốt khi bạn đặt xem trước thành INVISIBLE hoặc GONE – user2511882
kiểm tra Robotium của tôi vẫn không thành công với cùng một RuntimeException khi đánh giá được đặt thành INVISIBLE. – Yenchi
ok .. chúng tôi đã trải qua điều này trước ... trong trường hợp của chúng tôi đó là vì chúng tôi đã sử dụng để khởi chạy các hoạt động mới trên mỗi lần nhấp nút .. và kết quả là roboitum sẽ konk ra .. chúng tôi đã phải giết tất cả các hoạt động trong tearDown .. – user2511882