android / android/android-test

Calling finish() after onStart() does not move its state to DESTROYED but remains in RESUMED

Ouverte
#800 1 commentaire 3 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
1.2k
Forks
342
Merge moyen
11 h 29 min
PR mergées (30 j)
2

Description

### Description
In Robolectric local unit test,
calling finish() in onStart() does not move its state to DESTROYED but remains in RESUMED.

This StackOverflow question (https://stackoverflow.com/questions/64525956/junit-framework-assertionfailederror-expecteddestroyed-but-wasresumed) may address the same issue.

### Steps to Reproduce
```
public class FinishOnCreateActivity extends AppCompatActivity {
@Override
public void onCreate() {
super.onCreate();
finish();
}
}

public class FinishOnStartActivity extends AppCompatActivity {
@Override
public void onStart() {
super.onStart();
finish();
}
}

@RunWith(AndroidJUnit4.class)
public class ActivityTest {
@Test
public void testFinishOnCreateActivity() {
try (ActivityScenario scenario =
ActivityScenario.launch(FinishOnCreateActivity.class)) {
assertThat(scenario.getState()).isEqualTo(Lifecycle.State.DESTROYED);
}
}

@Test
public void testFinishOnStartActivity() {
try (ActivityScenario scenario =
ActivityScenario.launch(FinishOnStartActivity.class)) {
assertThat(scenario.getState()).isEqualTo(Lifecycle.State.DESTROYED);
}
}
}
```

### Expected Results
Pass both tests

### Actual Results
Pass testFinishOnCreateActivity(),
Fail testFinishOnStartActivity().

### AndroidX Test and Android OS Versions
androidx.test 1.3.0
robolectric 4.4

### Link to a public git repo demonstrating the problem:
None

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par reproduire le problème avec les exemples FinishOnCreateActivity et FinishOnStartActivity ainsi qu’avec les deux tests ActivityScenario du rapport. Comparez l’état du Lifecycle observé après finish() dans onCreate() et onStart() ; le travail est terminé lorsque les deux tests indiquent Lifecycle.State.DESTROYED.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
android, java
Domaine
mobile, testing
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
42/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.