Sto provando a scrivere un test per la mia attività SignIn, in cui sto usando un AsyncTask.Espresso con AsyncTask
public class SignInActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
.........
new AsyncSignButton().execute();
}
class AsyncSignButton extends AsyncTask<Void, Void, Integer>{
.......
}
Per il test, ho provato ad utilizzare IdlingResource, ma non capisco come potrebbe utilizzarlo con un AsyncTask, non con una WebView come negli esempi, solo semplice un AsyncTask.
Ecco il mio codice di prova:
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;
}
}
}