2016-05-08 16 views
6

Làm cách nào để nghe phương pháp ActivityTestRule'sbeforeActivityLaunched() trong thử nghiệm android.Cách nghe phương thức beforeActivityLaunched của Android ActivityTestRule trong bài kiểm tra android

Giải pháp thay thế của tôi là tạo ActivityTestRule tùy chỉnh và cung cấp gọi lại trên hàm tạo. Nó là một thực hành xấu? Cùng một cách là OK để nghe phương thức khởi tạo của ActivityTestRule.

Đây là mã của tôi:

public class CustomActivityTestRule<A extends Activity> extends ActivityTestRule<A> { 

    public interface onBeforeListener{ 
     void onBefore(String message); 
    } 

    private onBeforeListener listener; 

    public CustomActivityTestRule(Class<A> activityClass, onBeforeListener listener) { 
     super(activityClass); 
    } 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
     listener.onBefore("before activity launch"); 
    } 
} 

Trong lớp thử nghiệm android, tôi có thể làm một cái gì đó như:

@Rule public CustomActivityTestRule<MainActivity> mainActivityActivityTestRule = new 
      CustomActivityTestRule<MainActivity>(MainActivity.class, new CustomActivityTestRule.onBeforeListener() { 
     @Override 
     public void onBefore(String message) { 
      //do something before activity starts 
     } 
    }); 

Cùng cách thức mà nó có thể làm điều gì đó trên nguyên tắc junit tạo đối tượng. Có cách nào khác để lắng nghe quy tắc kiểm tra junit instantiating không?

Trả lời

5

Bạn có thể ghi đè beforeActivityLaunched mà không cần tạo lớp mới.

Tôi đang sử dụng sau đây trong các thử nghiệm của tôi:

@Rule 
public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class) { 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
    } 

}; 
2

Bạn có thể cấu hình các quy tắc kiểm tra vì vậy nó không bắt đầu hoạt động một cách tự động.

@Rule 
public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class, false, false); 

Trong phương pháp thiết lập, bạn có thể chuẩn bị mọi thứ bạn cần rồi khởi chạy hoạt động.

activityTestRule.launchActivity(null); 

cũng Xem

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