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 に答える