Desidero affermare che la mia attività che sto attualmente testando è terminata quando vengono eseguite determinate azioni. Purtroppo fino ad ora sono solo per asserirlo aggiungendo un po 'di sonno alla fine del test. C'è un modo migliore ?Espresso come testare se l'attività è finita?
import android.content.Context;
import android.os.Build;
import android.support.test.rule.ActivityTestRule;
import android.test.suitebuilder.annotation.LargeTest;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.junit.Assert.assertTrue;
@SuppressWarnings("unchecked")
@RunWith(JUnit4.class)
@LargeTest
public class MyActivityTest {
Context context;
@Rule
public ActivityTestRule<MyActivity> activityRule
= new ActivityTestRule(MyActivity.class, true, false);
@Before
public void setup() {
super.setup();
// ...
}
@Test
public void finishAfterSomethingIsPerformed() throws Exception {
activityRule.launchActivity(MyActivity.createIntent(context));
doSomeTesting();
activityRule.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
fireEventThatResultsInTheActivityToFinishItself();
}
});
Thread.sleep(2000); // this is needed :(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
assertTrue(activityRule.getActivity().isDestroyed());
}
}
}
Grazie per la risposta. Immagino di non essere stato abbastanza chiaro. Il mio problema è che non ho una seconda attività o una prima attività. Ho solo un'attività. Quindi posso usare la tua soluzione solo se inizio un'attività fittizia solo per essere in grado di avviare Activtiy che voglio testare da lì .. – IHeartAndroid
in modo da avere la tua eseguibile e vuole fare qualcosa dopo aver finito? –
Voglio assicurarmi che la mia attività sia chiusa dopo fireEventThatResultsInTheActivityToFinishItself(); Si chiama – IHeartAndroid