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;
}
}
}