2015-11-03 15 views
5

Ứng dụng Android của tôi có dịch vụ gửi thông báo tới người dùng dựa trên các thông số như số lần chạy ứng dụng. Các thông báo được gửi vào các thời điểm khác nhau trong các tình huống khác nhau. Tôi muốn kiểm tra xem thông báo có được gửi đúng thời điểm trong tất cả các trường hợp khác nhau hay không. Android có cung cấp cách thử nghiệm như vậy không?Kiểm tra thông báo trong Android

+0

Bạn đang sử dụng dịch vụ thông báo nào? –

+0

Tôi đang sử dụng dịch vụ nền sẽ gửi thông báo vài ngày một lần. – user12345

+0

Ý tôi là, Bạn có đang sử dụng thông báo đơn giản hoặc thông báo đẩy không? –

Trả lời

1

đọc xin bài viết này

http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

Ở đây bạn sẽ tìm thấy lời giải thích tốt đẹp của chủ đề này:

Espresso dành cho Android là thử nghiệm hoàn hảo và nhanh chóng khuôn khổ tự động hóa, nhưng nó có quan trọng giới hạn - bạn chỉ được phép hoạt động bên trong ứng dụng của mình trong ngữ cảnh thử nghiệm.

Điều đó có nghĩa rằng nó không thể tự động kiểm tra cho các ứng dụng như các tính năng như:

  • thông báo ứng dụng push
  • đồng bộ hóa liên lạc
  • hướng từ ứng dụng khác để ứng dụng của bạn dưới kiểm tra,

vì bạn phải xử lý các ứng dụng khác từ thiết bị di động - NotificationBar, Contacts hoặc People ứng dụng, v.v.

Thực tế là không thể thực hiện cho đến khi phát hành UIAutomator 2.0. Dưới dạng được nêu trong bài đăng trên blog dành cho nhà phát triển Android - "... Quan trọng nhất, UI Automator hiện được dựa trên Android Instrumentation ...". Và bởi vì trong số đó chúng tôi có thể chạy các thử nghiệm UIAutomator cũng như Espresso kiểm tra sử dụng Instrumentation test runner. Ngoài ra, chúng tôi có thể kết hợp các thử nghiệm UIAutomator cùng với Espresso kiểm tra và điều này mang lại cho chúng tôi sức mạnh thực sự và quyền kiểm soát trên điện thoại và ứng dụng đang được thử nghiệm.

7

Kiểm tra thông báo bằng UIAutomator: -

Chỉ cần đi qua các mã dưới đây. Nó sẽ giúp bạn trong việc kiểm tra thông báo.

UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
device.openNotification(); 
device.wait(Until.hasObject(By.text(NOTIFICATION_TITLE)), TIMEOUT); 
UiObject2 title = device.findObject(By.text(NOTIFICATION_TITLE)); 
UiObject2 text = device.findObject(By.text(NOTIFICATION_TEXT)); 
assertEquals(NOTIFICATION_TITLE, title.getText()); 
assertEquals(NOTIFICATION_TEXT, text.getText()); 
title.click(); 
device.wait(Until.hasObject(By.text(ESPRESSO.getName())), TIMEOUT);` 

Đừng quên thêm phụ thuộc UIAutomator vào build.gradle.

`//UIAutomator dependency 
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'` 
+0

được đăng bởi @ dcr24 Tôi chưa có đủ tiếng để nhận xét. Câu trả lời của Prem Choudhary khá khéo léo nhưng điều quan trọng cần lưu ý là nó chỉ hoạt động trên tiền đề rằng thiết bị được mở khóa, nếu không device.openNotification() sẽ không hoạt động cho màn hình khóa. –

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