android / android/android-test
Calling finish() after onStart() does not move its state to DESTROYED but remains in RESUMED
- 主要言語
- 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