2015-01-02 8 views
10

Ich versuche, einen Test für meine SignIn-Aktivität zu schreiben, in der ich eine AsyncTask verwende.Espresso mit AsyncTask

public class SignInActivity extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    ......... 

    new AsyncSignButton().execute(); 
} 

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

Für den Test habe ich versucht, IdlingResource, aber ich verstehe nicht, wie es mit einem AsyncTask verwenden würde, nicht mit einem WebView wie in den Beispielen nur einfach eine AsyncTask.


Hier ist mein Test-Code:

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

} 

Antwort

8

gute Nachricht, Sie brauchen keine benutzerdefinierten IdlingResource für AsyncTask: Espresso wartet bereits für alle Aufgaben vor der Ausführung Aktionen/Behauptungen laufen zu haben. Dies wird zum Beispiel here erwähnt.