2015-01-02 17 views
10

Tôi đang cố gắng viết thử nghiệm cho Hoạt động đăng nhập của mình, trong đó tôi đang sử dụng AsyncTask.Espresso với AsyncTask

public class SignInActivity extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    ......... 

    new AsyncSignButton().execute(); 
} 

class AsyncSignButton extends AsyncTask<Void, Void, Integer>{ 
    ....... 
} 

Để thử nghiệm, tôi đã cố gắng sử dụng IdlingResource, nhưng tôi không hiểu làm thế nào sẽ sử dụng nó với một AsyncTask, không phải với một WebView như trong ví dụ, chỉ đơn giản một AsyncTask.


Đây là mã thử nghiệm của tôi:

public class Test extends ActivityInstrumentationTestCase2<SplashActivity> { 

private SplashActivity mActivity; 

public Test(){ 
    super(SplashActivity.class); 
} 

public Test(Class<SplashActivity> activityClass) { 
    super(activityClass); 
} 

@Override 
protected void setUp() throws Exception{ 
    super.setUp(); 
    mActivity = getActivity(); 
    //how call it? 
} 

@LargeTest 
public void testList() throws InterruptedException { 

    //wait AsyncTask before call 
    onView(withId(R.id.action_bar_accept_button)).perform(click()); 

} 

public final class AsyncIdlingResource implements IdlingResource { 

    private AsyncTask asyncTask; 
    private ResourceCallback callback; 

    public AsyncIdlingResource(AsyncTask asyncTask){ 
     this.asyncTask = checkNotNull(asyncTask); 
    } 

    @Override 
    public String getName() { 
     return "Sign idling resource"; 
    } 

    @Override 
    public boolean isIdleNow() { 
     if(asyncTask == null) return true; 
     return asyncTask.getStatus() == AsyncTask.Status.FINISHED; 
    } 

    @Override 
    public void registerIdleTransitionCallback(ResourceCallback resourceCallback) { 
     this.callback = resourceCallback; 
    } 
} 

} 

Trả lời

8

Chúc mừng, bạn không cần bất kỳ IdlingResource tùy chỉnh cho AsyncTask: Espresso đã chờ đợi cho tất cả các nhiệm vụ đã chạy trước khi thực hiện hành động/khẳng định. Điều này được đề cập ví dụ here.