带有 AsyncTask 的浓缩咖啡
Posted
技术标签:
【中文标题】带有 AsyncTask 的浓缩咖啡【英文标题】:Espresso with AsyncTask 【发布时间】:2015-01-02 19:00:16 【问题描述】:我正在尝试为我的登录活动编写一个测试,其中我正在使用 AsyncTask。
public class SignInActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
.........
new AsyncSignButton().execute();
class AsyncSignButton extends AsyncTask<Void, Void, Integer>
.......
为了测试,我尝试使用 IdlingResource,但我不明白如何将它与 AsyncTask 一起使用,而不是与示例中的 WebView 一起使用,只是简单的 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;
【问题讨论】:
【参考方案1】:好消息,AsyncTask 不需要任何自定义 IdlingResource:Espresso 在执行操作/断言之前已经等待所有任务运行。例如here。
【讨论】:
以上是关于带有 AsyncTask 的浓缩咖啡的主要内容,如果未能解决你的问题,请参考以下文章