Prepare tests for impending robolectric merge

Many shadow methods will be protected. Call the true android class and
method where possible in tests.

Test: make -j56 RunSettingsLibRoboTests
  && make -j56 RunFrameworksServicesRoboTests

Change-Id: I59af18ac03446317c18fd30b5705e969b49b93d5
This commit is contained in:
James Lemieux
2018-11-19 18:28:15 -08:00
parent f66699ae16
commit 508cf09cf4
6 changed files with 27 additions and 36 deletions

View File

@@ -22,12 +22,11 @@ import static com.android.settingslib.Utils.STORAGE_MANAGER_SHOW_OPT_IN_PROPERTY
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.app.ActivityManager;
import android.content.ContentResolver;
@@ -54,7 +53,6 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowAudioManager;
import org.robolectric.shadows.ShadowSettings;
import java.util.HashMap;
@@ -72,7 +70,7 @@ public class UtilsTest {
private static final String PERCENTAGE_50 = "50%";
private static final String PERCENTAGE_100 = "100%";
private ShadowAudioManager mShadowAudioManager;
private AudioManager mAudioManager;
private Context mContext;
@Mock
private LocationManager mLocationManager;
@@ -85,7 +83,7 @@ public class UtilsTest {
mContext = spy(RuntimeEnvironment.application);
when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager);
ShadowSecure.reset();
mShadowAudioManager = shadowOf(mContext.getSystemService(AudioManager.class));
mAudioManager = mContext.getSystemService(AudioManager.class);
}
@Test
@@ -205,28 +203,28 @@ public class UtilsTest {
@Test
public void isAudioModeOngoingCall_modeInCommunication_returnTrue() {
mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
assertThat(Utils.isAudioModeOngoingCall(mContext)).isTrue();
}
@Test
public void isAudioModeOngoingCall_modeInCall_returnTrue() {
mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
assertThat(Utils.isAudioModeOngoingCall(mContext)).isTrue();
}
@Test
public void isAudioModeOngoingCall_modeRingtone_returnTrue() {
mShadowAudioManager.setMode(AudioManager.MODE_RINGTONE);
mAudioManager.setMode(AudioManager.MODE_RINGTONE);
assertThat(Utils.isAudioModeOngoingCall(mContext)).isTrue();
}
@Test
public void isAudioModeOngoingCall_modeNormal_returnFalse() {
mShadowAudioManager.setMode(AudioManager.MODE_NORMAL);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
assertThat(Utils.isAudioModeOngoingCall(mContext)).isFalse();
}

View File

@@ -17,15 +17,14 @@ package com.android.settingslib.bluetooth;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
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.shadowOf;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
@@ -40,7 +39,6 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowAudioManager;
@RunWith(SettingsLibRobolectricTestRunner.class)
public class CachedBluetoothDeviceTest {
@@ -67,7 +65,7 @@ public class CachedBluetoothDeviceTest {
@Mock
private BluetoothDevice mSubDevice;
private CachedBluetoothDevice mCachedDevice;
private ShadowAudioManager mShadowAudioManager;
private AudioManager mAudioManager;
private Context mContext;
private int mBatteryLevel = BluetoothDevice.BATTERY_LEVEL_UNKNOWN;
@@ -75,7 +73,7 @@ public class CachedBluetoothDeviceTest {
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mShadowAudioManager = shadowOf(mContext.getSystemService(AudioManager.class));
mAudioManager = mContext.getSystemService(AudioManager.class);
when(mDevice.getAddress()).thenReturn(DEVICE_ADDRESS);
when(mHfpProfile.isProfileReady()).thenReturn(true);
when(mA2dpProfile.isProfileReady()).thenReturn(true);
@@ -212,7 +210,7 @@ public class CachedBluetoothDeviceTest {
// 2. Audio Manager: In Call
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
mCachedDevice.onActiveDeviceChanged(true, BluetoothProfile.A2DP);
mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
// Act & Assert:
// Get null result without Battery Level.
@@ -228,7 +226,7 @@ public class CachedBluetoothDeviceTest {
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
mCachedDevice.onActiveDeviceChanged(true, BluetoothProfile.A2DP);
mBatteryLevel = 10;
mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
// Act & Assert:
// Get "10% battery" result with Battery Level 10.
@@ -244,14 +242,13 @@ public class CachedBluetoothDeviceTest {
// Set device as Active for HFP and test connection state summary
mCachedDevice.onAudioModeChanged();
mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
mCachedDevice.onActiveDeviceChanged(true, BluetoothProfile.HEADSET);
assertThat(mCachedDevice.getConnectionSummary()).isEqualTo("Active");
// Test with battery level
mBatteryLevel = 10;
assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(
"Active, 10% battery");
assertThat(mCachedDevice.getConnectionSummary()).isEqualTo("Active, 10% battery");
// Set HFP profile to be disconnected and test connection state summary
updateProfileStatus(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
@@ -363,7 +360,7 @@ public class CachedBluetoothDeviceTest {
// 2. Audio Manager: In Call
updateProfileStatus(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
mCachedDevice.onActiveDeviceChanged(true, BluetoothProfile.HEARING_AID);
mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
// Act & Assert:
// Get "Active" result without Battery Level.
@@ -378,8 +375,8 @@ public class CachedBluetoothDeviceTest {
// 3. Audio Manager: In Call
updateProfileStatus(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
mCachedDevice.onActiveDeviceChanged(true, BluetoothProfile.HEARING_AID);
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
mBatteryLevel = 10;
mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL);
// Act & Assert:
// Get "Active, 10% battery" result with Battery Level 10.

View File

@@ -42,6 +42,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.os.Binder;
import android.os.HandlerThread;
import android.os.PowerManager;
import android.os.PowerSaveState;
@@ -139,7 +140,7 @@ public class BackupManagerServiceTest {
* specifically to prevent overloading the logs in production.
*/
@Test
public void testMoreDebug_isFalse() throws Exception {
public void testMoreDebug_isFalse() {
boolean moreDebug = BackupManagerService.MORE_DEBUG;
assertThat(moreDebug).isFalse();
@@ -943,7 +944,7 @@ public class BackupManagerServiceTest {
backupManagerService.backupNow();
assertThat(ShadowKeyValueBackupJob.getCallingUid()).isEqualTo(ShadowBinder.LOCAL_UID);
assertThat(ShadowBinder.getCallingUid()).isEqualTo(1);
assertThat(Binder.getCallingUid()).isEqualTo(1);
}
/**
@@ -961,7 +962,7 @@ public class BackupManagerServiceTest {
expectThrows(IllegalArgumentException.class, backupManagerService::backupNow);
assertThat(ShadowKeyValueBackupJobException.getCallingUid())
.isEqualTo(ShadowBinder.LOCAL_UID);
assertThat(ShadowBinder.getCallingUid()).isEqualTo(1);
assertThat(Binder.getCallingUid()).isEqualTo(1);
}
private BackupManagerService createBackupManagerServiceForRequestBackup() {

View File

@@ -18,9 +18,7 @@ package com.android.server.backup.testing;
import static com.android.server.backup.testing.TestUtils.runToEndOfTasks;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -36,18 +34,16 @@ import android.os.HandlerThread;
import android.os.Looper;
import android.os.PowerManager;
import android.os.Process;
import android.util.SparseArray;
import android.util.Log;
import com.android.server.backup.BackupAgentTimeoutParameters;
import com.android.server.backup.BackupManagerService;
import com.android.server.backup.Trampoline;
import com.android.server.backup.TransportManager;
import com.android.server.backup.internal.Operation;
import org.mockito.stubbing.Answer;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowBinder;
import org.robolectric.shadows.ShadowLog;
import java.io.File;
import java.lang.Thread.UncaughtExceptionHandler;
@@ -192,8 +188,7 @@ public class BackupManagerServiceTestUtils {
public static HandlerThread startSilentBackupThread(String tag) {
return startBackupThread(
(thread, e) ->
ShadowLog.e(
tag, "Uncaught exception in test thread " + thread.getName(), e));
Log.e(tag, "Uncaught exception in test thread " + thread.getName(), e));
}
private BackupManagerServiceTestUtils() {}

View File

@@ -25,12 +25,12 @@ import static java.util.stream.Collectors.toSet;
import android.os.Looper;
import android.os.Message;
import android.os.MessageQueue;
import android.os.SystemClock;
import com.android.server.testing.shadows.ShadowEventLog;
import org.robolectric.shadows.ShadowLog;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowSystemClock;
import java.util.Arrays;
import java.util.concurrent.Callable;
@@ -87,7 +87,7 @@ public class TestUtils {
// specific time to the looper the time of those messages will be before the looper's time.
// To fix this we advance SystemClock as well since that is from where the handlers read
// time.
ShadowSystemClock.setCurrentTimeMillis(shadowLooper.getScheduler().getCurrentTime());
SystemClock.setCurrentTimeMillis(shadowLooper.getScheduler().getCurrentTime());
}
/**

View File

@@ -5,6 +5,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import android.os.Looper;
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
import android.util.NtpTrustedTime;
@@ -18,7 +19,6 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowSystemClock;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -74,7 +74,7 @@ public class NtpTimeHelperTest {
doReturn(true).when(mMockNtpTrustedTime).forceRefresh();
doReturn(1L).when(mMockNtpTrustedTime).getCacheAge();
doReturn(MOCK_NTP_TIME).when(mMockNtpTrustedTime).getCachedNtpTime();
ShadowSystemClock.sleep(NtpTimeHelper.RETRY_INTERVAL);
SystemClock.sleep(NtpTimeHelper.RETRY_INTERVAL);
waitForTasksToBePostedOnHandlerAndRunThem();
assertThat(mCountDownLatch.await(2, TimeUnit.SECONDS)).isTrue();