Куинтин е прав в отговора си, за да ви насочи към ActivityScenario.moveToState(newState:), но му липсват някои подробности, които се надявам да попълня тук.
Преди всичко имайте предвид, че ActivityScenario.launch(activityClass:) методът не само стартира дейността, но и изчаква завършването на нейните преходи в състоянието на жизнения цикъл. Така че, освен ако не се обаждате на Activity.finish() в методите за събития от жизнения цикъл на вашата дейност можете да приемете, че е в ВЪЗОБНОВЕН до момента, в който ActivityScenario.launch(activityClass:) методът връща.
Второ, след като активността ви бъде стартирана и в ВЪЗОБНОВЕН състояние, след което го преместете обратно в СТАРТИРАНО състояние действително ще доведе до метода onPause() на вашата дейност Наречен. По същия начин преместете дейността обратно в състояние СЪЗДАДЕНО , ще предизвика своите onPause() и onStop() методи, които да бъдат извикани.
Трето, след като преместите активността обратно в СЪЗДАДЕНО или ЗАПОЧНАТО състояние, трябва да преместете го напред в състояние ВЪЗОБНОВЕН, преди да можете изпълнете твърдения за преглед и действия за преглед върху него, или в противен случай вашият тестов метод ще изведе NoActivityResumedException.
Всичко по-горе е обобщено в следния метод на изпитване:
@Test
fun moving_activity_back_to_started_state_and_then_forward_to_resumed_state() {
val activityScenario = ActivityScenario.launch(MyActivity::class.java)
// the activity's onCreate, onStart and onResume methods have been called at this point
activityScenario.moveToState(Lifecycle.State.STARTED)
// the activity's onPause method has been called at this point
activityScenario.moveToState(Lifecycle.State.RESUMED)
// the activity's onResume method has been called at this point
}
За да видите това в действие, вижте това примерно приложение и този тестов клас по-специално.
person
Adil Hussain
schedule
04.12.2020