diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java index adcc6172b92..cbf14321e4f 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonControllerTest.java @@ -34,12 +34,12 @@ import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadow import com.android.settings.testutils.shadow.ShadowThreadUtils; import com.android.settingslib.widget.ActionButtonsPreference; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Spy; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; @@ -59,7 +59,7 @@ public class AudioStreamButtonControllerTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); private static final String KEY = "audio_stream_button"; private static final int BROADCAST_ID = 1; - @Spy Context mContext = ApplicationProvider.getApplicationContext(); + private final Context mContext = ApplicationProvider.getApplicationContext(); @Mock private AudioStreamsHelper mAudioStreamsHelper; @Mock private PreferenceScreen mScreen; @Mock private BluetoothLeBroadcastReceiveState mBroadcastReceiveState; @@ -80,6 +80,11 @@ public class AudioStreamButtonControllerTest { .thenReturn(mPreference); } + @After + public void tearDown() { + ShadowAudioStreamsHelper.reset(); + } + @Test public void testDisplayPreference_sourceConnected_setDisconnectButton() { when(mAudioStreamsHelper.getAllConnectedSources()) diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java index 0af9c17543b..0cd5d61168b 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderControllerTest.java @@ -34,12 +34,12 @@ import com.android.settings.testutils.shadow.ShadowThreadUtils; import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.widget.LayoutPreference; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Spy; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; @@ -61,7 +61,7 @@ public class AudioStreamHeaderControllerTest { private static final String KEY = "audio_stream_header"; private static final int BROADCAST_ID = 1; private static final String BROADCAST_NAME = "broadcast name"; - @Spy Context mContext = ApplicationProvider.getApplicationContext(); + private final Context mContext = ApplicationProvider.getApplicationContext(); @Mock private AudioStreamsHelper mAudioStreamsHelper; @Mock private PreferenceScreen mScreen; @Mock private BluetoothLeBroadcastReceiveState mBroadcastReceiveState; @@ -81,6 +81,12 @@ public class AudioStreamHeaderControllerTest { when(mPreference.getContext()).thenReturn(mContext); } + @After + public void tearDown() { + ShadowEntityHeaderController.reset(); + ShadowAudioStreamsHelper.reset(); + } + @Test public void testDisplayPreference_sourceConnected_setSummary() { when(mAudioStreamsHelper.getAllConnectedSources()) diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreferenceTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreferenceTest.java index 0c93e3e1879..456e45d302a 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreferenceTest.java @@ -30,6 +30,7 @@ import android.view.View; import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceViewHolder; +import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState; @@ -42,7 +43,6 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import java.util.Collections; @@ -53,7 +53,7 @@ public class AudioStreamPreferenceTest { private static final String PROGRAM_NAME = "program_name"; private static final int BROADCAST_RSSI = 1; @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); - private Context mContext; + private final Context mContext = ApplicationProvider.getApplicationContext(); private AudioStreamPreference mPreference; @Mock private BluetoothLeBroadcastMetadata mBluetoothLeBroadcastMetadata; @Mock private BluetoothLeBroadcastReceiveState mBluetoothLeBroadcastReceiveState; @@ -61,7 +61,6 @@ public class AudioStreamPreferenceTest { @Before public void setUp() { - mContext = RuntimeEnvironment.application; mPreference = new AudioStreamPreference(mContext, null); when(mBluetoothLeBroadcastMetadata.getBroadcastId()).thenReturn(BROADCAST_ID); when(mBluetoothLeBroadcastMetadata.getBroadcastName()).thenReturn(BROADCAST_NAME); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceControllerTest.java index c0296350db4..3fd257f100c 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceControllerTest.java @@ -28,6 +28,7 @@ import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import androidx.test.core.app.ApplicationProvider; import org.junit.Before; import org.junit.Rule; @@ -37,7 +38,6 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class AudioStreamsActiveDeviceControllerTest { @@ -48,7 +48,7 @@ public class AudioStreamsActiveDeviceControllerTest { @Before public void setUp() { - Context context = RuntimeEnvironment.application; + Context context = ApplicationProvider.getApplicationContext(); mController = new AudioStreamsActiveDeviceController( context, AudioStreamsActiveDeviceController.KEY); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java index 3bcc9a3d079..4403528e2fb 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java @@ -30,12 +30,12 @@ import com.android.settings.R; import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper; import com.android.settingslib.bluetooth.CachedBluetoothDevice; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Spy; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; @@ -49,7 +49,7 @@ import org.robolectric.annotation.Config; public class AudioStreamsActiveDeviceSummaryUpdaterTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); private static final String DEVICE_NAME = "device_name"; - @Spy private final Context mContext = ApplicationProvider.getApplicationContext(); + private final Context mContext = ApplicationProvider.getApplicationContext(); private final AudioStreamsActiveDeviceSummaryUpdater.OnSummaryChangeListener mFakeListener = summary -> mUpdatedSummary = summary; @Mock private CachedBluetoothDevice mCachedBluetoothDevice; @@ -60,10 +60,14 @@ public class AudioStreamsActiveDeviceSummaryUpdaterTest { @Before public void setUp() { ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper); - ShadowAudioStreamsHelper.resetCachedBluetoothDevice(); mUpdater = new AudioStreamsActiveDeviceSummaryUpdater(mContext, mFakeListener); } + @After + public void tearDown() { + ShadowAudioStreamsHelper.reset(); + } + @Test public void register_summaryUpdated() { mUpdater.register(true); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/MediaControlHelperTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/MediaControlHelperTest.java index 113fc722284..2506d863a56 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/MediaControlHelperTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/MediaControlHelperTest.java @@ -23,6 +23,8 @@ import android.media.session.MediaController; import android.media.session.MediaSessionManager; import android.media.session.PlaybackState; +import androidx.test.core.app.ApplicationProvider; + import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper; import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowLocalMediaManager; import com.android.settingslib.bluetooth.CachedBluetoothDevice; @@ -30,6 +32,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.media.BluetoothMediaDevice; import com.android.settingslib.media.LocalMediaManager; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -38,7 +41,6 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.List; @@ -64,15 +66,20 @@ public class MediaControlHelperTest { @Before public void setUp() { - mContext = spy(RuntimeEnvironment.application); + mContext = spy(ApplicationProvider.getApplicationContext()); when(mContext.getSystemService(MediaSessionManager.class)).thenReturn(mMediaSessionManager); when(mMediaSessionManager.getActiveSessions(any())).thenReturn(List.of(mMediaController)); when(mMediaController.getPackageName()).thenReturn(FAKE_PACKAGE); when(mMediaController.getPlaybackState()).thenReturn(mPlaybackState); - ShadowAudioStreamsHelper.resetCachedBluetoothDevice(); ShadowLocalMediaManager.setUseMock(mLocalMediaManager); } + @After + public void tearDown() { + ShadowAudioStreamsHelper.reset(); + ShadowLocalMediaManager.reset(); + } + @Test public void testStart_noBluetoothManager_doNothing() { MediaControlHelper helper = new MediaControlHelper(mContext, null); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java index 64e1bc48808..e9eab5066ac 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java @@ -21,7 +21,6 @@ import static com.android.settings.connecteddevice.audiosharing.audiostreams.Aud import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.shadows.ShadowLooper.shadowMainLooper; @@ -33,6 +32,7 @@ import android.content.Context; import androidx.preference.Preference; import androidx.test.core.app.ApplicationProvider; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -60,10 +60,15 @@ public class SyncedStateTest { @Before public void setUp() { ShadowAlertDialog.reset(); - mMockContext = spy(ApplicationProvider.getApplicationContext()); + mMockContext = ApplicationProvider.getApplicationContext(); mInstance = SyncedState.getInstance(); } + @After + public void tearDown() { + ShadowAlertDialog.reset(); + } + @Test public void testGetInstance() { assertThat(mInstance).isNotNull(); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java index 0dff64d99de..331a30bec20 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java @@ -18,12 +18,15 @@ package com.android.settings.connecteddevice.audiosharing.audiostreams.testshado import android.bluetooth.BluetoothLeBroadcastReceiveState; +import androidx.annotation.Nullable; + import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsHelper; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; +import org.robolectric.annotation.Resetter; import java.util.List; import java.util.Optional; @@ -31,20 +34,22 @@ import java.util.Optional; @Implements(value = AudioStreamsHelper.class, callThroughByDefault = false) public class ShadowAudioStreamsHelper { private static AudioStreamsHelper sMockHelper; - private static Optional sCachedBluetoothDevice; + @Nullable private static CachedBluetoothDevice sCachedBluetoothDevice; public static void setUseMock(AudioStreamsHelper mockAudioStreamsHelper) { sMockHelper = mockAudioStreamsHelper; } - /** Resets {@link CachedBluetoothDevice} */ - public static void resetCachedBluetoothDevice() { - sCachedBluetoothDevice = Optional.empty(); + /** Reset static fields */ + @Resetter + public static void reset() { + sMockHelper = null; + sCachedBluetoothDevice = null; } public static void setCachedBluetoothDeviceInSharingOrLeConnected( CachedBluetoothDevice cachedBluetoothDevice) { - sCachedBluetoothDevice = Optional.of(cachedBluetoothDevice); + sCachedBluetoothDevice = cachedBluetoothDevice; } @Implementation @@ -56,6 +61,6 @@ public class ShadowAudioStreamsHelper { @Implementation public static Optional getCachedBluetoothDeviceInSharingOrLeConnected( LocalBluetoothManager manager) { - return sCachedBluetoothDevice; + return Optional.ofNullable(sCachedBluetoothDevice); } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowEntityHeaderController.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowEntityHeaderController.java index 951fb26c252..82519c5e8a4 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowEntityHeaderController.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowEntityHeaderController.java @@ -25,6 +25,7 @@ import com.android.settings.widget.EntityHeaderController; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; +import org.robolectric.annotation.Resetter; @Implements(value = EntityHeaderController.class, callThroughByDefault = false) public class ShadowEntityHeaderController { @@ -34,6 +35,12 @@ public class ShadowEntityHeaderController { sMockController = mockController; } + /** Reset static fields */ + @Resetter + public static void reset() { + sMockController = null; + } + /** Returns new instance of {@link EntityHeaderController} */ @Implementation public static EntityHeaderController newInstance( diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowLocalMediaManager.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowLocalMediaManager.java index 02f12c20350..4c679fb81f5 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowLocalMediaManager.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowLocalMediaManager.java @@ -21,6 +21,7 @@ import com.android.settingslib.media.MediaDevice; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; +import org.robolectric.annotation.Resetter; import java.util.Collections; @@ -34,6 +35,13 @@ public class ShadowLocalMediaManager { sMockManager = mockLocalMediaManager; } + /** Reset static fields */ + @Resetter + public static void reset() { + sMockManager = null; + sDeviceCallback = null; + } + /** Triggers onDeviceListUpdate of {@link LocalMediaManager.DeviceCallback} */ public static void onDeviceListUpdate() { sDeviceCallback.onDeviceListUpdate(Collections.emptyList()); @@ -45,7 +53,7 @@ public class ShadowLocalMediaManager { sMockManager.startScan(); } - /** Registers {@link LocalMediaManager.DeviceCallback} */ + /** Registers {@link LocalMediaManager.DeviceCallback} */ @Implementation public void registerCallback(LocalMediaManager.DeviceCallback deviceCallback) { sMockManager.registerCallback(deviceCallback);