2015-01-02 13 views
10

私はAsyncTaskを使用している私のSignInアクティビティのテストを書こうとしています。テストのためにエスプレッソとAsyncTask

public class SignInActivity extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    ......... 

    new AsyncSignButton().execute(); 
} 

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

、私はIdlingResourceを使用して試してみましたが、私はいないの例のようにWebViewの、単純なAsyncTaskと、AsyncTaskでそれを使用する方法を理解していません。ここで


は私のテストコードです:

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

} 

答えて

8

朗報、あなたはAsyncTaskのために任意のカスタムIdlingResourceを必要としません:エスプレッソはすでにアクション/アサーションを実行する前に実行したのがすべてのタスクを待ちます。これは、例えばhereのように言及されています。

関連する問題