Fixes fail test cases in AccessibilitySettingsTest

AccessibilityHearingAidPreferenceController can't be instantiated
correctly in tests with the lack of LocalBluetoothManager. This causes
null pointer exception when
AccessibilityHearingAidPreferenceController.setFragmentManager() is
called in AccessibilitySettings.onAttach().

Solution: Mocks the LocalBluetoothManager for tests to successfully
instantiate AccessibilityHearingAidPreferenceController to prevent null
pointer exception from happening.

Bug: 269407238
Test: atest AccessibilitySettingsTest
Change-Id: Ibcfffa10b46fd6e85c1b74b03343e5ee0e8843b3
This commit is contained in:
Angela Wang
2023-02-15 08:23:58 +00:00
parent 4951384ba2
commit 0e48c55a2a

View File

@@ -56,9 +56,11 @@ import com.android.internal.accessibility.util.AccessibilityUtils;
import com.android.internal.content.PackageMonitor; import com.android.internal.content.PackageMonitor;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.XmlTestUtils;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settings.testutils.shadow.ShadowFragment; import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.RestrictedPreference; import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.search.SearchIndexableRaw;
@@ -85,6 +87,7 @@ import java.util.List;
/** Test for {@link AccessibilitySettings}. */ /** Test for {@link AccessibilitySettings}. */
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowBluetoothUtils.class})
public class AccessibilitySettingsTest { public class AccessibilitySettingsTest {
private static final String PACKAGE_NAME = "com.android.test"; private static final String PACKAGE_NAME = "com.android.test";
private static final String CLASS_NAME = PACKAGE_NAME + ".test_a11y_service"; private static final String CLASS_NAME = PACKAGE_NAME + ".test_a11y_service";
@@ -116,6 +119,8 @@ public class AccessibilitySettingsTest {
private ShadowAccessibilityManager mShadowAccessibilityManager; private ShadowAccessibilityManager mShadowAccessibilityManager;
@Mock @Mock
private AppOpsManager mAppOpsManager; private AppOpsManager mAppOpsManager;
@Mock
private LocalBluetoothManager mLocalBluetoothManager;
private Lifecycle mLifecycle; private Lifecycle mLifecycle;
@@ -134,6 +139,7 @@ public class AccessibilitySettingsTest {
anyInt(), anyString())).thenReturn(AppOpsManager.MODE_ALLOWED); anyInt(), anyString())).thenReturn(AppOpsManager.MODE_ALLOWED);
mLifecycle = new Lifecycle(() -> mLifecycle); mLifecycle = new Lifecycle(() -> mLifecycle);
when(mFragment.getSettingsLifecycle()).thenReturn(mLifecycle); when(mFragment.getSettingsLifecycle()).thenReturn(mLifecycle);
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
} }
@Test @Test