私が現在テスト中のアシティビティーは、特定のアクションが実行されたときに終了すると主張したいと思います。残念ながらこれまでのところ、私はテストの最後に睡眠を追加することによってそれを主張するだけです。より良い方法がありますか?エスプレッソアクティビティが終了したかどうかをテストするには?
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());
}
}
}
感謝。私は十分にはっきりしていなかったと思う。私の問題は、私に第二の活動または第一の活動がないことです。私は一つのアクティビティしか持っていません。だから私はあなたがそこからテストしたいActivtiyを起動できるようにダミーの最初のアクティビティを開始する場合に限り、あなたのソリューションを使用することができます。 – IHeartAndroid
あなたはあなたのrunnableを持っていて、 –
fireEventThatResultsInTheActivityToFinishItself();の後に自分のアクティビティが閉じられていることを確認します。 – IHeartAndroid