Android 运行Robolectric测试时,AsyncTask内的ProgressDialog.show()出现StackOverFlow错误

Android 运行Robolectric测试时,AsyncTask内的ProgressDialog.show()出现StackOverFlow错误,android,junit,junit4,robolectric,Android,Junit,Junit4,Robolectric,注意:已访问链接,但没有帮助 在运行Robolectric Junit测试时,我遇到了由 ProgressDialog.show() 在AsyncTask内进行的调用 我有以下活动: public abstract class TransactionFragmentActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { s

注意:已访问链接,但没有帮助

在运行Robolectric Junit测试时,我遇到了由

ProgressDialog.show()

在AsyncTask内进行的调用

我有以下活动:

public abstract class TransactionFragmentActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.transction_layout);             
        SetUpService setup = new SetUpService();
        setup.execute();
    }

    private class SetUpService extends AsyncTask<String, Void, Boolean> {

        private ProgressDialog dialog = new ProgressDialog(TransactionFragmentActivity.this);

        /** progress dialog to show user that the backup is processing. */
        /** application context. */
        @Override
        protected void onPreExecute() {
            SetUpService.this.dialog.setMessage("Please wait");
            SetUpService.this.dialog.setCancelable(false);
            SetUpService.this.dialog.show();
        }

        @Override
        protected Boolean doInBackground(final String... args) {
            // Setting data 
            Log.d(TAG,"doInBackground...");

            fetchData(); //some method doing work
            return true;
        }


        @Override
        protected void onPostExecute(final Boolean success) {
            if (dialog != null && dialog.isShowing()) {
                dialog.dismiss();
            }
        }
    }
}
公共抽象类TransactionFragmentActivity扩展了FragmentActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.Transaction_layout);
SetUpService setup=新建SetUpService();
setup.execute();
}
私有类SetUpService扩展了异步任务{
private ProgressDialog=新建ProgressDialog(TransactionFragmentActivity.this);
/**“进度”对话框,向用户显示备份正在处理*/
/**应用程序上下文*/
@凌驾
受保护的void onPreExecute(){
SetUpService.this.dialog.setMessage(“请稍候”);
SetUpService.this.dialog.setCancelable(false);
SetUpService.this.dialog.show();
}
@凌驾
受保护的布尔doInBackground(最终字符串…args){
//设置数据
Log.d(标签“doInBackground…”);
fetchData();//某些方法正在工作
返回true;
}
@凌驾
受保护的void onPostExecute(最终布尔值成功){
if(dialog!=null&&dialog.isShowing()){
dialog.dismise();
}
}
}
}
以下是堆栈跟踪:

java.lang.StackOverflower错误 位于java.lang.Class.getConstructor0(未知源) 位于java.lang.Class.getDeclaredConstructor(未知源) 位于org.roblectric.bytecode.roblectricinternals.newInstance(roblectricinternals.java:39) 位于org.roblectric.bytecode.roblectricinternals.directlyOn(roblectricinternals.java:54) 位于org.roblectric.roblectric.directlyOn(roblectric.java:366) 直接访问org.roblectric.shadows.ShadowView.directly(ShadowView.java:439) 位于org.roblectric.shadows.ShadowView.invalidate(ShadowView.java:168) 在android.view.view.invalidate(view.java)中 位于android.widget.TextView.setPadding(TextView.java:2122) 在android.view.view.recomputeadding(view.java:10914)中 位于android.view.view.resolvePadding(view.java:11584) 在android.view.view.resolveLayoutDirection上(view.java:11524) 位于android.view.view.onAttachedToWindow(view.java:11440) 位于android.widget.TextView.onAttachedToWindow(TextView.java:4448) 在android.view.view.dispatchAttachedToWindow(view.java:11755) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424) 在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1201) 位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4214) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 位于android.view.Choreographer.doCallbacks(Choreographer.java:555) 位于android.view.Choreographer.doFrame(Choreographer.java:525) 在android.view.Choreographer$FrameHandler.handleMessage(Choreographer.java:657)中 位于org.roblectric.shadows.ShadowHandler.routeMessage(ShadowHandler.java:125) 访问org.roblectric.shadows.ShadowHandler.access$100(ShadowHandler.java:25) 位于org.roblectric.shadows.ShadowHandler$1.run(ShadowHandler.java:110) 位于org.roblectric.util.Scheduler.postdayed(Scheduler.java:37) 位于org.roblectric.shadows.ShadowLooper.post(ShadowLooper.java:198) 位于org.roblectric.shadows.ShadowHandler.postDelayed(ShadowHandler.java:56) 位于org.roblectric.shadows.ShadowHandler.sendMessageDelayed(ShadowHandler.java:105) 位于org.roblectric.shadows.ShadowHandler.sendMessageAtTime(ShadowHandler.java:160) 位于android.os.Handler.sendMessageAtTime(Handler.java) 在android.view.Choreographer.scheduleFrameLocked(Choreographer.java:479)中 在android.view.Choreographer.postCallbackDelayedInternal(Choreographer.java:309)中 位于android.view.Choreographer.postCallbackDelayed(Choreographer.java:292) 位于android.view.Choreographer.postCallback(Choreographer.java:266) 在android.view.ViewRootImpl.scheduleTraversals(ViewRootImpl.java:974) 在android.view.ViewRootImpl.setLayoutParams上(ViewRootImpl.java:792) 在android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:343)中 位于android.app.Activity.onWindowAttributeChanged(Activity.java:2267) 位于android.view.Window.setDefaultWindowFormat(Window.java:1226) 访问com.android.internal.policy.impl.PhoneWindow.access$1300(PhoneWindow.java:105) 在com.android.internal.policy.impl.PhoneWindow$DecorView.drawableChanged上(PhoneWindow.java:2407) 在com.android.internal.policy.impl.PhoneWindow$DecorView.fitSystemWindows(PhoneWindow.java:2345) 在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1203) 位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4214) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 位于android.view.Choreographer.doCallbacks(Choreographer.java:555
private ProgressDialog dialog = new ProgressDialog(getActivity());

protected void onPreExecute() { 
    dialog.setMessage("Please wait");
    dialog.setCancelable(false);
    dialog.show();
} 
Activity act = (TransactionFragmentActivity) this;

private ProgressDialog dialog = new ProgressDialog(act);

protected void onPreExecute() { 
    dialog.setMessage("Please wait");
    dialog.setCancelable(false);
    dialog.show();
}