Merge "Remove Looper.Legacy usage from multiple test classes" into main

This commit is contained in:
Fan Wu
2024-04-11 00:53:34 +00:00
committed by Android (Google) Code Review
4 changed files with 37 additions and 27 deletions

View File

@@ -18,14 +18,8 @@ package com.android.settings;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Looper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.widget.TextView; import android.widget.TextView;
@@ -36,20 +30,24 @@ import com.android.settings.testutils.shadow.ShadowRecoverySystem;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {ShadowRecoverySystem.class, ShadowBluetoothAdapter.class}) @Config(shadows = {ShadowRecoverySystem.class, ShadowBluetoothAdapter.class})
public class ResetNetworkConfirmTest { public class ResetNetworkConfirmTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String TEST_PACKAGE = "com.android.settings"; private static final String TEST_PACKAGE = "com.android.settings";
@@ -57,11 +55,12 @@ public class ResetNetworkConfirmTest {
@Mock @Mock
private ResetNetworkConfirm mResetNetworkConfirm; private ResetNetworkConfirm mResetNetworkConfirm;
private PausedExecutorService mExecutorService;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
mResetNetworkConfirm = new ResetNetworkConfirm(); mResetNetworkConfirm = new ResetNetworkConfirm();
mActivity = spy(Robolectric.setupActivity(FragmentActivity.class)); mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
mResetNetworkConfirm.mActivity = mActivity; mResetNetworkConfirm.mActivity = mActivity;
@@ -86,7 +85,8 @@ public class ResetNetworkConfirmTest {
}; };
mResetNetworkConfirm.mFinalClickListener.onClick(null /* View */); mResetNetworkConfirm.mFinalClickListener.onClick(null /* View */);
Robolectric.getBackgroundThreadScheduler().advanceToLastPostedRunnable(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(ShadowRecoverySystem.getWipeEuiccCalledCount()).isEqualTo(0); assertThat(ShadowRecoverySystem.getWipeEuiccCalledCount()).isEqualTo(0);
} }

View File

@@ -24,18 +24,23 @@ import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.provider.Settings; import android.provider.Settings;
import androidx.test.core.app.ApplicationProvider;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
// import org.robolectric.annotation.LooperMode;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
// @LooperMode(LooperMode.Mode.LEGACY)
public class MobileDataEnabledListenerTest { public class MobileDataEnabledListenerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final int SUB_ID_ONE = 111; private static final int SUB_ID_ONE = 111;
private static final int SUB_ID_TWO = 222; private static final int SUB_ID_TWO = 222;
@@ -47,8 +52,7 @@ public class MobileDataEnabledListenerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext();
mContext = RuntimeEnvironment.application;
mListener = new MobileDataEnabledListener(mContext, mClient); mListener = new MobileDataEnabledListener(mContext, mClient);
} }

View File

@@ -51,13 +51,11 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController; import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import java.util.Objects; import java.util.Objects;
@Ignore("b/313576125") @Ignore("b/313576125")
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = { @Config(shadows = {
com.android.settings.testutils.shadow.ShadowFragment.class, com.android.settings.testutils.shadow.ShadowFragment.class,
}) })

View File

@@ -39,6 +39,7 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.system.ResetDashboardFragment; import com.android.settings.system.ResetDashboardFragment;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat; import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
@@ -48,17 +49,14 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule; import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = ShadowAlertDialogCompat.class) @Config(shadows = ShadowAlertDialogCompat.class)
public class ResetOptionsDeletePrivateSpaceControllerTest { public class ResetOptionsDeletePrivateSpaceControllerTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -78,8 +76,7 @@ public class ResetOptionsDeletePrivateSpaceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext();
mContext = RuntimeEnvironment.application;
mController = new ResetOptionsDeletePrivateSpaceController(mContext, KEY); mController = new ResetOptionsDeletePrivateSpaceController(mContext, KEY);
mActivity = Robolectric.setupActivity(FragmentActivity.class); mActivity = Robolectric.setupActivity(FragmentActivity.class);
mDialogFragment = mDialogFragment =
@@ -149,9 +146,12 @@ public class ResetOptionsDeletePrivateSpaceControllerTest {
boolean result = boolean result =
mController.handleActivityResult( mController.handleActivityResult(
PRIVATE_SPACE_DELETE_CREDENTIAL_REQUEST, Activity.RESULT_CANCELED, mIntent); PRIVATE_SPACE_DELETE_CREDENTIAL_REQUEST, Activity.RESULT_CANCELED, mIntent);
ShadowLooper.idleMainLooper();
assertThat(result).isFalse(); assertThat(result).isFalse();
AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog(); AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
ShadowLooper.idleMainLooper();
assertThat(alertDialog).isNotNull(); assertThat(alertDialog).isNotNull();
assertThat(alertDialog.isShowing()).isFalse(); assertThat(alertDialog.isShowing()).isFalse();
} }
@@ -162,12 +162,16 @@ public class ResetOptionsDeletePrivateSpaceControllerTest {
mSetFlagsRule.enableFlags(android.multiuser.Flags.FLAG_DELETE_PRIVATE_SPACE_FROM_RESET); mSetFlagsRule.enableFlags(android.multiuser.Flags.FLAG_DELETE_PRIVATE_SPACE_FROM_RESET);
mDialogFragment.show(mActivity.getSupportFragmentManager(), "className"); mDialogFragment.show(mActivity.getSupportFragmentManager(), "className");
ShadowLooper.idleMainLooper();
AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog(); AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(alertDialog).isNotNull(); assertThat(alertDialog).isNotNull();
assertThat(alertDialog.isShowing()).isTrue(); assertThat(alertDialog.isShowing()).isTrue();
Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
positiveButton.performClick(); positiveButton.performClick();
ShadowLooper.idleMainLooper();
assertThat(alertDialog.isShowing()).isFalse(); assertThat(alertDialog.isShowing()).isFalse();
} }
@@ -177,12 +181,16 @@ public class ResetOptionsDeletePrivateSpaceControllerTest {
mSetFlagsRule.enableFlags(android.multiuser.Flags.FLAG_DELETE_PRIVATE_SPACE_FROM_RESET); mSetFlagsRule.enableFlags(android.multiuser.Flags.FLAG_DELETE_PRIVATE_SPACE_FROM_RESET);
mDialogFragment.show(mActivity.getSupportFragmentManager(), "fragmentName"); mDialogFragment.show(mActivity.getSupportFragmentManager(), "fragmentName");
ShadowLooper.idleMainLooper();
AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog(); AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(alertDialog).isNotNull(); assertThat(alertDialog).isNotNull();
assertThat(alertDialog.isShowing()).isTrue(); assertThat(alertDialog.isShowing()).isTrue();
Button negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE); Button negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);
negativeButton.performClick(); negativeButton.performClick();
ShadowLooper.idleMainLooper();
assertThat(alertDialog.isShowing()).isFalse(); assertThat(alertDialog.isShowing()).isFalse();
} }
} }