Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何显示Android Robotium测试的进度对话框:_Android_Testing_Progressdialog_Robotium - Fatal编程技术网

如何显示Android Robotium测试的进度对话框:

如何显示Android Robotium测试的进度对话框:,android,testing,progressdialog,robotium,Android,Testing,Progressdialog,Robotium,主类: public class ProgressIndicator { static ProgressIndicator instance; Context context; public static ProgressIndicator getInstance() { if (instance == null) { instance = new ProgressIndicator(); } re

主类:

public class ProgressIndicator {
    static ProgressIndicator instance;
    Context context;
    public static ProgressIndicator getInstance() {

        if (instance == null) {
            instance = new ProgressIndicator();
        }
        return instance;
    }

    private ProgressIndicator() {

    }
    IndicatorThread sd;
    public void showIndicator(Activity activity, String title, String message, boolean flag) {
        sd = new IndicatorThread(activity, title, message, flag);
        sd.start();
    }

    public void dismissIndicator(Activity activity) throws InterruptedException{
        sd.dismiss();
        // sd.join();
    }

    private static class IndicatorThread extends Thread {

        private static final Message listener = null;
        private static String mTitle;
        private static String mText;
        private Activity mActivity;
        private boolean mflag;
        private ProgressDialog mDialog;

        protected boolean dismiss;

        IndicatorThread(Activity activity, String title, String text, boolean flag) {
            super();
            IndicatorThread.mText = text;
            IndicatorThread.mTitle = title;
            this.mActivity = activity;
            this.mflag = flag;
            if (mDialog == null) {
                mDialog = new ProgressDialog(mActivity);
                mDialog.setTitle(mTitle);
                mDialog.setMessage(mText);              
                mDialog.setIndeterminate(true);
                mDialog.setCancelable(true);
                mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

                if(mflag == true){
                    mDialog.setButton("Cancel", listener);
                    mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface arg0) {
                            mDialog.dismiss();
                            interrupt();
                        }
                    });
                }
            }
            mDialog.show();
            mDialog.getWindow().setLayout(160, 350);
            mDialog.getWindow().setGravity(0);
        }

        public void dismiss() {
            dismiss = true;
            mDialog.dismiss();
            System.out.println("notifying..."+dismiss);
            synchronized (this) {
                notifyAll();
            }
        }

        @Override
        public void run() {
            System.out.println("Running..."+dismiss);

            while (!dismiss) {
                System.out.println("waiting..."+!dismiss);

                synchronized (this) {
                    try {
                        wait();
                    } catch (InterruptedException ie) {
                        ie.printStackTrace();
                    }
                }
            }
            System.out.println("Quitting...");
        }
    }
}
private ProgressIndicator progressInstance = null;
public void showWaitingAnimation(Activity parent) {
    progressInstance.showIndicator(AppController.getInstance().currentActivity, "" , "", false);
}
public class ProgressIndicatorTest extends
    ActivityInstrumentationTestCase2<MyTestActivity> {

    private Solo solo;

    private ProgressIndicator progressIndicatorInstance;

    public ProgressIndicatorTest() {
        super("com.test.activity",
                MyTestActivity.class);
    }

    protected void setUp() throws Exception {
        AppController.getInstance().startApp(getActivity());
        solo = new Solo(getInstrumentation(), getActivity());
        progressIndicatorInstance = ProgressIndicator.getInstance();
    }

    protected void tearDown() throws Exception {
        try {
            solo.finalize();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        getActivity().finish();
        super.tearDown();
    }

    public void testGetInstance() {
        try {
            ProgressIndicator instance = ProgressIndicator.getInstance();
            assertNotNull(instance);
        } catch (Exception e) {
            fail("Creation of ExceptionDetails get instance failed!");
        }
    }

    public void testShowIndicator()  {
        Log.d("testCase Name:-", "testShowIndicator");

        ProgressIndicator progressInstance = ProgressIndicator.getInstance() ;
        progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(), "" , "", false);
        //AppController.getInstance().showWaitingAnimation(AppController.getInstance().getCurrentActivity());
            solo.waitForDialogToClose(8000);
        try {
            progressInstance.dismissIndicator(AppController.getInstance().getCurrentActivity());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void testDismissIndicator() {
        Log.d("testCase Name:-", "testDismissIndicator");
        ProgressIndicator progressInstance = ProgressIndicator.getInstance() ;
        progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(), "" , "", false);
        solo.waitForDialogToClose(2000);
        try {
            progressInstance.dismissIndicator(AppController.getInstance().getCurrentActivity());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //AppController.getInstance().showAppTerminationDialog("", AppController.getInstance().getCurrentActivity());
    }
}
来自AppController类的调用:

public class ProgressIndicator {
    static ProgressIndicator instance;
    Context context;
    public static ProgressIndicator getInstance() {

        if (instance == null) {
            instance = new ProgressIndicator();
        }
        return instance;
    }

    private ProgressIndicator() {

    }
    IndicatorThread sd;
    public void showIndicator(Activity activity, String title, String message, boolean flag) {
        sd = new IndicatorThread(activity, title, message, flag);
        sd.start();
    }

    public void dismissIndicator(Activity activity) throws InterruptedException{
        sd.dismiss();
        // sd.join();
    }

    private static class IndicatorThread extends Thread {

        private static final Message listener = null;
        private static String mTitle;
        private static String mText;
        private Activity mActivity;
        private boolean mflag;
        private ProgressDialog mDialog;

        protected boolean dismiss;

        IndicatorThread(Activity activity, String title, String text, boolean flag) {
            super();
            IndicatorThread.mText = text;
            IndicatorThread.mTitle = title;
            this.mActivity = activity;
            this.mflag = flag;
            if (mDialog == null) {
                mDialog = new ProgressDialog(mActivity);
                mDialog.setTitle(mTitle);
                mDialog.setMessage(mText);              
                mDialog.setIndeterminate(true);
                mDialog.setCancelable(true);
                mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

                if(mflag == true){
                    mDialog.setButton("Cancel", listener);
                    mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface arg0) {
                            mDialog.dismiss();
                            interrupt();
                        }
                    });
                }
            }
            mDialog.show();
            mDialog.getWindow().setLayout(160, 350);
            mDialog.getWindow().setGravity(0);
        }

        public void dismiss() {
            dismiss = true;
            mDialog.dismiss();
            System.out.println("notifying..."+dismiss);
            synchronized (this) {
                notifyAll();
            }
        }

        @Override
        public void run() {
            System.out.println("Running..."+dismiss);

            while (!dismiss) {
                System.out.println("waiting..."+!dismiss);

                synchronized (this) {
                    try {
                        wait();
                    } catch (InterruptedException ie) {
                        ie.printStackTrace();
                    }
                }
            }
            System.out.println("Quitting...");
        }
    }
}
private ProgressIndicator progressInstance = null;
public void showWaitingAnimation(Activity parent) {
    progressInstance.showIndicator(AppController.getInstance().currentActivity, "" , "", false);
}
public class ProgressIndicatorTest extends
    ActivityInstrumentationTestCase2<MyTestActivity> {

    private Solo solo;

    private ProgressIndicator progressIndicatorInstance;

    public ProgressIndicatorTest() {
        super("com.test.activity",
                MyTestActivity.class);
    }

    protected void setUp() throws Exception {
        AppController.getInstance().startApp(getActivity());
        solo = new Solo(getInstrumentation(), getActivity());
        progressIndicatorInstance = ProgressIndicator.getInstance();
    }

    protected void tearDown() throws Exception {
        try {
            solo.finalize();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        getActivity().finish();
        super.tearDown();
    }

    public void testGetInstance() {
        try {
            ProgressIndicator instance = ProgressIndicator.getInstance();
            assertNotNull(instance);
        } catch (Exception e) {
            fail("Creation of ExceptionDetails get instance failed!");
        }
    }

    public void testShowIndicator()  {
        Log.d("testCase Name:-", "testShowIndicator");

        ProgressIndicator progressInstance = ProgressIndicator.getInstance() ;
        progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(), "" , "", false);
        //AppController.getInstance().showWaitingAnimation(AppController.getInstance().getCurrentActivity());
            solo.waitForDialogToClose(8000);
        try {
            progressInstance.dismissIndicator(AppController.getInstance().getCurrentActivity());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void testDismissIndicator() {
        Log.d("testCase Name:-", "testDismissIndicator");
        ProgressIndicator progressInstance = ProgressIndicator.getInstance() ;
        progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(), "" , "", false);
        solo.waitForDialogToClose(2000);
        try {
            progressInstance.dismissIndicator(AppController.getInstance().getCurrentActivity());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //AppController.getInstance().showAppTerminationDialog("", AppController.getInstance().getCurrentActivity());
    }
}
测试类:

public class ProgressIndicator {
    static ProgressIndicator instance;
    Context context;
    public static ProgressIndicator getInstance() {

        if (instance == null) {
            instance = new ProgressIndicator();
        }
        return instance;
    }

    private ProgressIndicator() {

    }
    IndicatorThread sd;
    public void showIndicator(Activity activity, String title, String message, boolean flag) {
        sd = new IndicatorThread(activity, title, message, flag);
        sd.start();
    }

    public void dismissIndicator(Activity activity) throws InterruptedException{
        sd.dismiss();
        // sd.join();
    }

    private static class IndicatorThread extends Thread {

        private static final Message listener = null;
        private static String mTitle;
        private static String mText;
        private Activity mActivity;
        private boolean mflag;
        private ProgressDialog mDialog;

        protected boolean dismiss;

        IndicatorThread(Activity activity, String title, String text, boolean flag) {
            super();
            IndicatorThread.mText = text;
            IndicatorThread.mTitle = title;
            this.mActivity = activity;
            this.mflag = flag;
            if (mDialog == null) {
                mDialog = new ProgressDialog(mActivity);
                mDialog.setTitle(mTitle);
                mDialog.setMessage(mText);              
                mDialog.setIndeterminate(true);
                mDialog.setCancelable(true);
                mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

                if(mflag == true){
                    mDialog.setButton("Cancel", listener);
                    mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface arg0) {
                            mDialog.dismiss();
                            interrupt();
                        }
                    });
                }
            }
            mDialog.show();
            mDialog.getWindow().setLayout(160, 350);
            mDialog.getWindow().setGravity(0);
        }

        public void dismiss() {
            dismiss = true;
            mDialog.dismiss();
            System.out.println("notifying..."+dismiss);
            synchronized (this) {
                notifyAll();
            }
        }

        @Override
        public void run() {
            System.out.println("Running..."+dismiss);

            while (!dismiss) {
                System.out.println("waiting..."+!dismiss);

                synchronized (this) {
                    try {
                        wait();
                    } catch (InterruptedException ie) {
                        ie.printStackTrace();
                    }
                }
            }
            System.out.println("Quitting...");
        }
    }
}
private ProgressIndicator progressInstance = null;
public void showWaitingAnimation(Activity parent) {
    progressInstance.showIndicator(AppController.getInstance().currentActivity, "" , "", false);
}
public class ProgressIndicatorTest extends
    ActivityInstrumentationTestCase2<MyTestActivity> {

    private Solo solo;

    private ProgressIndicator progressIndicatorInstance;

    public ProgressIndicatorTest() {
        super("com.test.activity",
                MyTestActivity.class);
    }

    protected void setUp() throws Exception {
        AppController.getInstance().startApp(getActivity());
        solo = new Solo(getInstrumentation(), getActivity());
        progressIndicatorInstance = ProgressIndicator.getInstance();
    }

    protected void tearDown() throws Exception {
        try {
            solo.finalize();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        getActivity().finish();
        super.tearDown();
    }

    public void testGetInstance() {
        try {
            ProgressIndicator instance = ProgressIndicator.getInstance();
            assertNotNull(instance);
        } catch (Exception e) {
            fail("Creation of ExceptionDetails get instance failed!");
        }
    }

    public void testShowIndicator()  {
        Log.d("testCase Name:-", "testShowIndicator");

        ProgressIndicator progressInstance = ProgressIndicator.getInstance() ;
        progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(), "" , "", false);
        //AppController.getInstance().showWaitingAnimation(AppController.getInstance().getCurrentActivity());
            solo.waitForDialogToClose(8000);
        try {
            progressInstance.dismissIndicator(AppController.getInstance().getCurrentActivity());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void testDismissIndicator() {
        Log.d("testCase Name:-", "testDismissIndicator");
        ProgressIndicator progressInstance = ProgressIndicator.getInstance() ;
        progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(), "" , "", false);
        solo.waitForDialogToClose(2000);
        try {
            progressInstance.dismissIndicator(AppController.getInstance().getCurrentActivity());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //AppController.getInstance().showAppTerminationDialog("", AppController.getInstance().getCurrentActivity());
    }
}
公共类ProgressIndicatorTest扩展
ActivityInstrumentationTestCase2{
私人独奏;
私人进步指示器进步指示器;
公共进度指标测试(){
超级(“com.test.activity”,
MyTestActivity.class);
}
受保护的void setUp()引发异常{
AppController.getInstance().startApp(getActivity());
solo=新的solo(getInstrumentation(),getActivity());
progressIndicatorInstance=ProgressIndicator.getInstance();
}
受保护的void tearDown()引发异常{
试一试{
solo.finalize();
}捕获(可丢弃的e){
e、 printStackTrace();
}
getActivity().finish();
super.tearDown();
}
public void testGetInstance(){
试一试{
ProgressIndicator实例=ProgressIndicator.getInstance();
assertNotNull(实例);
}捕获(例外e){
失败(“创建ExceptionDetails获取实例失败!”);
}
}
公共void testShowIndicator(){
Log.d(“testCase名称:-”,“testShowIndicator”);
ProgressIndicator progressInstance=ProgressIndicator.getInstance();
progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(),“”,“”,false);
//AppController.getInstance().showWaitingAnimation(AppController.getInstance().getCurrentActivity());
索洛。waitForDialogToClose(8000);
试一试{
DismissidIndicator(AppController.getInstance().getCurrentActivity());
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
公共无效测试解除指示符(){
Log.d(“testCase名称:-”,“TestDismissionor”);
ProgressIndicator progressInstance=ProgressIndicator.getInstance();
progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(),“”,“”,false);
solo.waitForDialogToClose(2000年);
试一试{
DismissidIndicator(AppController.getInstance().getCurrentActivity());
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//AppController.getInstance().showAppTerminationDialog(“”,AppController.getInstance().getCurrentActivity());
}
}

运行项目时,对话框可见并正常工作。但是当运行测试用例时,只有一个黑屏可见,没有显示任何对话框(在使用solo.waitForDialogToClose(8000)之后;问题就在这里)。没有抛出错误或异常,测试用例在Android Junit测试中通过。如果有人知道如何在robotium测试中显示此进度对话框,请与我们分享。

在我的情况下,我可以成功显示进度对话框。 我只是用

boolean showProgressBar = false;
showProgressBar = solo.waitForText("Verifying and Saving Credentials...", 1, 3000);

我希望它也能对你起作用……)

在我的例子中,我可以成功地显示进度对话框。 我只是用

boolean showProgressBar = false;
showProgressBar = solo.waitForText("Verifying and Saving Credentials...", 1, 3000);

我希望它也能对你起作用……)

如前所述,我使用了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。ProgressIndicator progressInstance=ProgressIndicator.getInstance();progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(),“”,“”,false)//AppController.getInstance().showWaitingAnimation(AppController.getInstance().getCurrentActivity());索洛。waitForDialogToClose(8000);但它不起作用……但在应用程序中它起作用了,如果我用solo.waitForText检查,它会返回它正在获取文本,但屏幕过去只是黑色的。如前所述,我使用了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。ProgressIndicator progressInstance=ProgressIndicator.getInstance();progressInstance.showIndicator(AppController.getInstance().getCurrentActivity(),“”,“”,false)//AppController.getInstance().showWaitingAnimation(AppController.getInstance().getCurrentActivity());索洛。waitForDialogToClose(8000);但它不起作用……但在应用程序中,它起作用了。如果我用solo.waitForText检查,它会返回它正在获取文本,但屏幕过去只是黑色的。