我在一个测试用例的结尾处关闭一个Activity,因此在下一个测试用例的开头它为null:

public void test1() throws Exception {

    //activity is calling the RegisterActivity in onCreate
    activity = getActivity();

    // register next activity that need to be monitored.
    RegisterActivity nextActivity = (RegisterActivity) getInstrumentation()
        .waitForMonitorWithTimeout(activityMonitor, 5);
    // next activity is opened and captured.
    assertNotNull(nextActivity);
    if (nextActivity != null) {
        nextActivity.finish();
    }
}

public void test2() throws Exception {
    //nextActivity.finish() from the previous test has not yet finished

    //body of test2
    //...
    //...
}


如果我在test1中设置了线程睡眠,那么问题就解决了:

    if (nextActivity != null) {
        nextActivity.finish();
        Thread.sleep(1500);
    }


有更好的方法吗?有没有一种方法可以阻止TestRunner,直到nextActivity完成?

最佳答案

尝试为要运行的nextActivity创建一个new thread。调用thread.start()方法后,在要阻止TestRunner的位置调用thread.join()

07-27 16:43