5

我正在使用 Robotium 和 ActivityInstrumentationTestCase2 为 android 运行 UIAutomation。我有一个包含 5 个测试的测试套件。有时我的测试会因为测试开始而随机崩溃,而之前的测试尚未结束。有没有办法避免这种情况?是否可以在每次测试之前手动添加 10 秒延迟以摆脱这个可怕的恼人错误?

编辑:

public class MyTest<T extends RoboActivity> extends ActivityInstrumentationTestCase2<T>
{

    protected Solo solo;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        solo = new Solo(getInstrumentation(), getActivity());
    }

    @Override
    protected void tearDown() throws Exception {
        solo.finishOpenedActivities();

        try {
            solo.finalize();
        }
        catch (Throwable e) {
            Assert.fail(e.getMessage()+ e.toString());
            e.printStackTrace();
        }

        super.tearDown();
    }
}
4

2 回答 2

1

也许这可以工作:

mSolo = new Solo(getInstrumentation(), getActivity());
mSolo.waitForActivity(AccountDetail.class);

似乎 waitFor* 方法比“睡眠”更好地管理 http://robotium.googlecode.com/svn/doc/com/robotium/solo/Solo.html#waitForActivity(java.lang.Class , int)

于 2015-01-28T22:23:38.193 回答
0

我的测试的构造、拆解等略有不同并且运行良好(见下文)。我不得不添加一个睡眠来解决一些不确定的测试失败。

public class AccountDetailTest extends ActivityInstrumentationTestCase2<AccountDetail> {

private Solo solo;

public AccountDetailTest() {
    super("com.bigcorp.breadmaker", AccountDetail.class);
}

@Override
public void setUp() {
    solo = new Solo(getInstrumentation(), getActivity());
    solo.sleep(500); //wait for activity to initialize
}

@SmallTest
public void testDummy() {
    assertNotNull(solo);
}

@Override
public void tearDown() throws Exception {
    solo.finishOpenedActivities();
}
}
于 2012-02-28T15:01:47.290 回答