2017-06-08 19 views
7

Tôi có JobService được triển khai đúng và hoạt động tốt trong các trường hợp đơn giản nhưng tôi muốn đảm bảo dịch vụ được kiểm tra đúng trong mọi điều kiện.Làm cách nào để kiểm tra JobService của tôi bằng thử nghiệm Thiết bị đo đạc?

Tôi muốn sử dụng một trường hợp thử nghiệm Instrumentation vì vậy mà tôi có thể kiểm tra toàn bộ dòng chảy từ lịch trình của công việc với getSystemService(JobScheduler.class).schedule(job) đến gọi của onCreate trong JobService tôi và onStartJob/onStopJob tôi cuộc gọi.

My JobService ra mắt AsyncTask s đôi khi (do đó trở true trong onStartJob) và thời điểm khác nó trả false cho công việc đó đã được thực hiện. Tôi có các cuộc gọi khác nhau tới jobFinished(mJobParameters, needsReschedule) và tôi muốn đảm bảo rằng chúng hoạt động chính xác.

Tôi đã cố gắng để có được các bài kiểm tra thiết bị đo đạc trong vài ngày qua nhưng tốt nhất tôi có thể đưa ra là một bài kiểm tra lên lịch công việc nhưng công việc không bao giờ rời khỏi trạng thái đang chờ xử lý. Tôi đã thử các cấu hình khác nhau của các chuỗi chờ/nền để xem việc giải phóng chuỗi giao diện người dùng là những gì cần thiết nhưng chưa có thành công nào. Nó cũng không xuất hiện rằng Google đã nổi lên bất cứ điều gì để kiểm tra đầy đủ dòng chảy của thành phần này là đáng ngạc nhiên, cho dù họ dường như buộc mọi người sử dụng nó như các API mới hơn được phát hành như thế nào.

Tôi đã xem What tools are available to test JobScheduler? nhưng thật khó để tự động hóa với adb (và tôi không quan tâm đến câu trả lời sử dụng câu trả lời).

Có ai biết cách kết thúc để kết thúc kiểm tra JobService với JobScheduler bằng cách sử dụng kiểm tra Instrumentation không?

+0

Nếu điều này không đủ chú ý, đừng quên bạn có thể thêm tiền thưởng vào nó. (Chúng tôi có xu hướng không khuyến khích các yêu cầu cho upvotes trong bài viết ở đây, nhưng tại một căng có thể đặt chúng trong các ý kiến, nơi họ không phải là một phân tâm cho độc giả trong tương lai). – halfer

+1

Khi tôi thực hiện chỉnh sửa đó, câu hỏi không đủ điều kiện nhận tiền thưởng –

+0

Tôi đã mở yêu cầu tính năng với Google về điều này: https://issuetracker.google.com/issues/62543492 –

Trả lời

4

Nhờ nhà phát triển của Google đang rất phản hồi để trả lời câu hỏi của tôi tại đây: https://issuetracker.google.com/issues/62543492, giờ đây là cách rõ ràng để làm điều đó!

Dường như một phần của thiết lập trong những ví dụ thử nghiệm thiết bị đo đạc họ đã cung cấp là thiết lập các ứng dụng đang chạy như tích cực và chủ yếu là tìm hiểu về tình trạng công việc qua cmd jobscheduler <command> lời gọi trên vỏ từ kiểm tra

try { 
     SystemUtil.runShellCommand(getInstrumentation(), "cmd activity set-inactive " 
       + mContext.getPackageName() + " false"); 
    } catch (IOException e) { 
     Log.w("ConstraintTest", "Failed setting inactive false", e); 
    } 

Xem the provided InstrumentationTestCase subclass they posted in the bug notes

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