From 1779bd43e427969386df0a44767852b285f65220 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 18 Jan 2022 14:19:14 +0000 Subject: [PATCH] Fix the Robolectric Tests Failures - The ShadowWifiManager class is not working as expected - The getSystemService(WifiManager.class) return null when testing - Use Mockito class instead of Shadow class Bug: 214906101 Bug: 214938188 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=AllInOneTetherSettingsTest make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherSettingsTest Change-Id: Ic54af8524fbff1b6ac916ca8e1bcac52f413663a --- .../android/settings/AllInOneTetherSettingsTest.java | 9 ++++----- .../settings/wifi/tether/WifiTetherSettingsTest.java | 10 ++++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java b/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java index 7dc4613c449..aec31fc7790 100644 --- a/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java @@ -35,6 +35,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.TetheringManager; import android.net.wifi.SoftApConfiguration; +import android.net.wifi.WifiManager; import android.os.UserHandle; import android.os.UserManager; import android.util.FeatureFlagUtils; @@ -43,27 +44,23 @@ import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; import com.android.settings.core.FeatureFlags; -import com.android.settings.testutils.shadow.ShadowWifiManager; import com.android.settings.wifi.tether.WifiTetherAutoOffPreferenceController; import com.android.settings.wifi.tether.WifiTetherSecurityPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowWifiManager.class}) public class AllInOneTetherSettingsTest { private static final String[] WIFI_REGEXS = {"wifi_regexs"}; private static final String[] USB_REGEXS = {"usb_regexs"}; @@ -73,6 +70,8 @@ public class AllInOneTetherSettingsTest { private Context mContext; private AllInOneTetherSettings mAllInOneTetherSettings; + @Mock + private WifiManager mWifiManager; @Mock private ConnectivityManager mConnectivityManager; @Mock @@ -91,6 +90,7 @@ public class AllInOneTetherSettingsTest { mContext = spy(RuntimeEnvironment.application); MockitoAnnotations.initMocks(this); + doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); doReturn(mConnectivityManager) .when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); doReturn(mTetheringManager) @@ -178,7 +178,6 @@ public class AllInOneTetherSettingsTest { } @Test - @Ignore public void createPreferenceControllers_hasAutoOffPreference() { assertThat(mAllInOneTetherSettings.createPreferenceControllers(mContext) .stream() diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java index e5d39dd7336..e0cd780950d 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java @@ -31,6 +31,7 @@ import android.content.Context; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.TetheringManager; +import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; @@ -43,10 +44,8 @@ import androidx.preference.PreferenceScreen; import com.android.settings.core.FeatureFlags; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.shadow.ShadowFragment; -import com.android.settings.testutils.shadow.ShadowWifiManager; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -60,13 +59,14 @@ import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowWifiManager.class}) public class WifiTetherSettingsTest { private static final String[] WIFI_REGEXS = {"wifi_regexs"}; private Context mContext; private WifiTetherSettings mWifiTetherSettings; + @Mock + private WifiManager mWifiManager; @Mock private ConnectivityManager mConnectivityManager; @Mock @@ -79,6 +79,7 @@ public class WifiTetherSettingsTest { mContext = spy(RuntimeEnvironment.application); MockitoAnnotations.initMocks(this); + doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); doReturn(mConnectivityManager) .when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); doReturn(mTetheringManager).when(mContext).getSystemService(Context.TETHERING_SERVICE); @@ -89,7 +90,6 @@ public class WifiTetherSettingsTest { } @Test - @Ignore public void wifiTetherNonIndexableKeys_tetherAvailable_keysNotReturned() { FeatureFlagUtils.setEnabled(mContext, FeatureFlags.TETHER_ALL_IN_ONE, false); // To let TetherUtil.isTetherAvailable return true, select one of the combinations @@ -119,7 +119,6 @@ public class WifiTetherSettingsTest { } @Test - @Ignore public void createPreferenceControllers_notEmpty() { assertThat(WifiTetherSettings.SEARCH_INDEX_DATA_PROVIDER.getPreferenceControllers(mContext)) .isNotEmpty(); @@ -152,7 +151,6 @@ public class WifiTetherSettingsTest { } @Test - @Ignore public void createPreferenceControllers_hasAutoOffPreference() { assertThat(mWifiTetherSettings.createPreferenceControllers(mContext) .stream()