[Audiosharing] Clean up some tests - properly reset shadows and removed unused spy.

Test: atest -c com.android.settings.connecteddevice.audiosharing.audiostreams
Bug: 308368124
Change-Id: If47a00ec02fbd78146483d5a409d9bcc42b5e841
This commit is contained in:
chelseahao
2024-06-03 15:53:58 +08:00
parent 38236869ee
commit 5ce2589dba
10 changed files with 70 additions and 24 deletions

View File

@@ -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())

View File

@@ -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())

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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<CachedBluetoothDevice> 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<CachedBluetoothDevice> getCachedBluetoothDeviceInSharingOrLeConnected(
LocalBluetoothManager manager) {
return sCachedBluetoothDevice;
return Optional.ofNullable(sCachedBluetoothDevice);
}
}

View File

@@ -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(

View File

@@ -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);