android / android/android-test

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

オープン
#800 コメント 1 件 リアクション 3 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
1.2k
フォーク
342
平均マージ
11時間 29分
マージ済み PR(30日)
2

説明

### 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

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、レポートにある FinishOnCreateActivity と FinishOnStartActivity の例、および 2 つの ActivityScenario テストで問題を再現します。onCreate() と onStart() で finish() を呼び出した後に観測される Lifecycle の状態を比較します。両方のテストが Lifecycle.State.DESTROYED を報告すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
android, java
領域
mobile, testing
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。