Ich möchte bestätigen, dass meine Aktivität, die ich gerade teste, beendet ist, wenn bestimmte Aktionen ausgeführt werden. Leider kann ich es bis jetzt nur behaupten, indem ich am Ende des Tests etwas Schlaf hinzufüge. Gibt es einen besseren Weg?Espresso Wie testen, ob die Aktivität beendet ist?
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());
}
}
}
Vielen Dank für Ihre Antwort. Ich denke, ich war nicht klar genug. Mein Problem ist, dass ich keine zweite Aktivität oder eine erste Aktivität habe. Ich habe nur eine Aktivität. Also kann ich deine Lösung nur verwenden wenn ich eine Dummy erste Aktivität starte, nur um meine Activtiy starten zu können, die ich von da aus testen möchte. – IHeartAndroid
damit hast du deine runnable und willst etwas machen nachdem es fertig ist? –
Ich möchte sicherstellen, dass meine Aktivität nach dem fireEventThatResultsInTheActivityToFinishItself() geschlossen ist; heißt – IHeartAndroid