Use Fake context and settings provider to prevent test flakiness
**Root cause** The ReduceBrightColorsIntensityPreferenceControllerTest would modify the settings during test. However, since this is a unit test, it shouldn't trigger modifying the brightness on the attached test device. Otherwise, the test would be unstable depends on how stable the device is, which should be tested by the integration test. Bug: 397762527 Test: abtd Flag: EXEMPT test only Change-Id: I0c0d7327d4356482295121c11c3a1e5ed814ffec
This commit is contained in:
@@ -31,6 +31,7 @@ android_test {
|
||||
"mockito-target-minus-junit4",
|
||||
"platform-test-annotations",
|
||||
"platform-test-rules",
|
||||
"testables",
|
||||
"truth",
|
||||
"kotlinx_coroutines_test",
|
||||
"SettingsLibPreference-testutils",
|
||||
|
@@ -18,16 +18,12 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.platform.test.annotations.DisableFlags;
|
||||
import android.platform.test.annotations.EnableFlags;
|
||||
import android.platform.test.flag.junit.SetFlagsRule;
|
||||
import android.provider.Settings;
|
||||
import android.testing.TestableContext;
|
||||
import android.testing.TestableResources;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
@@ -46,16 +42,15 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
|
||||
@Rule
|
||||
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||
@Rule
|
||||
public final TestableContext mContext =
|
||||
new TestableContext(ApplicationProvider.getApplicationContext());
|
||||
|
||||
private Context mContext;
|
||||
private Resources mResources;
|
||||
private TestableResources mResources = mContext.getOrCreateTestableResources();
|
||||
private ReduceBrightColorsIntensityPreferenceController mPreferenceController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
mResources = spy(mContext.getResources());
|
||||
when(mContext.getResources()).thenReturn(mResources);
|
||||
mPreferenceController = new ReduceBrightColorsIntensityPreferenceController(mContext,
|
||||
"rbc_intensity");
|
||||
}
|
||||
@@ -63,12 +58,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@DisableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOffAndDisabled_RbcOnAndAvailable_returnTrue() {
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, false);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, true);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
@@ -76,12 +69,11 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@DisableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOffAndDisabled_RbcOffAndAvailable_returnTrue() {
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, false);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(
|
||||
R.bool.config_reduceBrightColorsAvailable, true);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
@@ -89,12 +81,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@DisableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOffAndDisabled_RbcOnAndUnavailable_returnFalse() {
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, false);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, false);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isFalse();
|
||||
}
|
||||
@@ -102,12 +92,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOnAndDisabled_RbcOnAndAvailable_returnTrue() {
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, false);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, true);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
@@ -115,12 +103,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOnAndDisabled_RbcOffAndAvailable_returnTrue() {
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, false);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, true);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
@@ -128,12 +114,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOnAndDisabled_RbcOnAndUnavailable_returnFalse() {
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, false);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, false);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isFalse();
|
||||
}
|
||||
@@ -141,12 +125,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOnAndEnabled_RbcOnAndAvailable_returnFalse() {
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, true);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, true);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isFalse();
|
||||
}
|
||||
@@ -154,12 +136,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOnAndEnabled_RbcOffAndAvailable_returnFalse() {
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, true);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, true);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isFalse();
|
||||
}
|
||||
@@ -167,12 +147,10 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_EVEN_DIMMER)
|
||||
public void isAvailable_whenEvenDimmerOnAndEnabled_RbcOnAndUnavailable_returnFalse() {
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
com.android.internal.R.bool.config_evenDimmerEnabled);
|
||||
mResources.addOverride(com.android.internal.R.bool.config_evenDimmerEnabled, true);
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||
doReturn(false).when(mResources).getBoolean(
|
||||
R.bool.config_reduceBrightColorsAvailable);
|
||||
mResources.addOverride(R.bool.config_reduceBrightColorsAvailable, false);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isFalse();
|
||||
}
|
||||
|
@@ -18,13 +18,14 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
import android.testing.TestableContext;
|
||||
|
||||
import androidx.preference.SwitchPreference;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -37,7 +38,9 @@ public class ReduceBrightColorsPersistencePreferenceControllerTest {
|
||||
private static final int OFF = 0;
|
||||
private static final int UNKNOWN = -1;
|
||||
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
@Rule
|
||||
public final TestableContext mContext =
|
||||
new TestableContext(ApplicationProvider.getApplicationContext());
|
||||
private final SwitchPreference mPreference = new SwitchPreference(mContext);
|
||||
private final ReduceBrightColorsPersistencePreferenceController mController =
|
||||
new ReduceBrightColorsPersistencePreferenceController(mContext, PREF_KEY);
|
||||
|
Reference in New Issue
Block a user