6

Tôi biết có rất nhiều câu hỏi về vấn đề này nhưng tôi không thể tìm thấy bất kỳ điều gì để trợ giúp tôi: (Android: Espresso không đợi cho đến khi phân đoạn hoặc hoạt động được hiển thị để mọi thử nghiệm không thành công

Tôi đã cố gắng sử dụng Espresso để tạo UI-Test cho một ứng dụng android.Sau khi đánh bại các vấn đề phụ thuộc (vì một số thư viện được bao gồm hai lần trong các phiên bản khác nhau như phụ thuộc từ các thư viện khác) Tôi vẫn không thể tạo các bài kiểm tra ...

I biết về IdlingResource nhưng khi tôi đọc, espresso chờ đợi ra khỏi hộp cho đến khi chủ đề chính và AsyncTaskPool là nhàn rỗi trước khi chạy bất kỳ bài kiểm tra nào.Để liên lạc với nó, tôi crated một ứng dụng đơn giản có chứa hai hoạt động, một splashscreen và một mainactivity. Các Splashscreen chứa một cái gì đó như thế này vì đã chờ đợi ba giây trước khi bắt đầu MainActivity

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    finish(); 
    Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
    startActivity(intent); 
    } 
}, 3000); 

Tôi cũng cố gắng sử dụng AsyncTask cho điều này nhưng không có vẻ làm việc một cách chính xác vì mỗi thử nghiệm thất bại.

Bài kiểm tra chỉ kiểm tra nếu một TextView có chứa một văn bản định nghĩa được hiển thị trên kết quả bằng cách:

onView(withText("DummyText")).check(matches(notNullValue())); 

Tôi nghĩ rằng nó sẽ không thể là khó khăn để tạo ra một thử nghiệm đơn giản ...

Bởi vì tôi đã thử nghiệm chống lại api> = 16 Tôi cần cà phê espresso. Chỉ cần cho tôi tôi đã kiểm tra nó bằng cách sử dụng uiAutomator (Tôi biết nó cho api> = 18) nhưng có logic thông minh để chờ đợi cho một cái gì đó được hiển thị ..... và hoạt động hoàn hảo ...

Trả lời

5

là gì activityRule của bạn? Bởi vì nếu nó là SplashScreenActivity, kiểm tra sẽ bắt đầu ngay lập tức và onView sẽ thất bại nếu khung nhìn không nằm trên màn hình splash. Cố gắng mở trực tiếp MainActivity để kiểm tra chế độ xem đó. Tôi đang sử dụng Espresso một thời gian và tôi biết rằng các phương thức @Test bắt đầu khi hoạt động được định nghĩa là ActivityTestRule đã tải xong.

Hy vọng điều này sẽ hữu ích.

Chúc may mắn!

+2

Cảm ơn lời khuyên của bạn! tôi nhận nó làm việc sau khi tôi tuyên bố tham số thứ ba của sự cai trị như 'false': '@Rule ActivityTestRule công mMainActivity = new ActivityTestRule <> (SplascreenActivity.class, đúng, sai); ' Làm như vậy, tôi có thể xác định hành vi như ví dụ . DoNothing() khi (mDeviceService) .getDevices '();' và sau đó bắt đầu hoạt động bằng tay bằng cách sử dụng 'mSplashscreenActivity.launchActivity (null); '. Tôi cũng đã thay đổi _Handler_ bằng _AsyncTask_ và biết công việc kiểm tra như mong đợi có chứa đang chờ, kiểm tra, v.v. – grumpyshoe

+1

Thực sự tuyệt vời! Làm tốt lắm! – sunlover3

+0

@grumpyshoe Tôi cũng phải đối mặt với cùng một vấn đề, Trong ứng dụng của tôi, chúng tôi có một màn hình giật gân tự động điều hướng người dùng đến màn hình đăng nhập nhưng thử nghiệm của tôi không chờ đợi để điều hướng đến Đăng nhập và bắt đầu tìm kiếm. Bạn có thể giúp tôi không. – Krishnakant

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