2011-12-13 11 views
5

Używam UIAutomation dla Androida za pomocą Robotium i ActivityInstrumentationTestCase2. Mam zestaw testów z 5 testami. Czasami mój test losowo ulega awarii, ponieważ rozpoczyna się test, gdy poprzedni test jeszcze się nie zakończył. Czy można tego uniknąć? czy możliwe jest ręczne dodanie 10-sekundowego opóźnienia przed każdym testem, aby uciec od tego okropnego irytującego błędu?Testowanie Androida - problem z ActivityInstrumentationTestCase2?

EDIT:

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(); 
    } 
} 
+0

brzmi to bardzo dziwne, można opublikować kod twoich testów? – gianpi

Odpowiedz

0

budowa moich testów męska, porzuca, itd. Są nieco inne i działa dobrze (patrz niżej). Musiałem dodać sen, aby obejść niektóre niedeterministyczne niepowodzenia testów.

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(); 
} 
}