Reduce flaky of InstantAppDomainsPreferenceTest

Also DeveloperOptionsControllerTest.

Fix: 355270127
Flag: EXEMPT test only
Test: atest InstantAppDomainsPreferenceTest
Test: atest DeveloperOptionsControllerTest
Change-Id: I80517988b8674ec4d717292da71454419762e65a
This commit is contained in:
Chaohui Wang
2024-07-30 16:29:09 +08:00
parent 3a8ce3f970
commit e15fcaa1cf
2 changed files with 32 additions and 29 deletions

View File

@@ -24,6 +24,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsEnabled import androidx.compose.ui.test.assertIsEnabled
import androidx.compose.ui.test.assertIsNotDisplayed import androidx.compose.ui.test.assertIsNotDisplayed
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.onRoot import androidx.compose.ui.test.onRoot
@@ -35,42 +36,41 @@ import com.android.settings.R
import com.android.settings.Utils import com.android.settings.Utils
import com.android.settingslib.spa.testutils.delay import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spa.testutils.onDialogText import com.android.settingslib.spa.testutils.onDialogText
import com.android.settingslib.spa.testutils.waitUntilExists
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.MockitoSession import org.mockito.MockitoSession
import org.mockito.Spy import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness import org.mockito.quality.Strictness
import org.mockito.Mockito.`when` as whenever
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class InstantAppDomainsPreferenceTest { class InstantAppDomainsPreferenceTest {
@get:Rule @get:Rule val composeTestRule = createComposeRule()
val composeTestRule = createComposeRule()
private lateinit var mockSession: MockitoSession private lateinit var mockSession: MockitoSession
@Spy private val packageManager = mock<PackageManager>()
private val context: Context = ApplicationProvider.getApplicationContext()
@Mock private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
private lateinit var packageManager: PackageManager on { packageManager } doReturn packageManager
doReturn(mock).whenever(mock).createContextAsUser(any(), any())
}
@Before @Before
fun setUp() { fun setUp() {
mockSession = ExtendedMockito.mockitoSession() mockSession =
.initMocks(this) ExtendedMockito.mockitoSession()
.mockStatic(Utils::class.java) .mockStatic(Utils::class.java)
.strictness(Strictness.LENIENT) .strictness(Strictness.LENIENT)
.startMocking() .startMocking()
whenever(context.packageManager).thenReturn(packageManager)
Mockito.doReturn(context).`when`(context).createContextAsUser(any(), anyInt())
mockDomains(emptySet()) mockDomains(emptySet())
} }
@@ -108,8 +108,8 @@ class InstantAppDomainsPreferenceTest {
setContent() setContent()
composeTestRule.onNodeWithText(context.getString(R.string.domain_urls_summary_none)) composeTestRule.waitUntilExists(
.assertIsDisplayed() hasText(context.getString(R.string.domain_urls_summary_none)))
} }
@Test @Test
@@ -138,9 +138,9 @@ class InstantAppDomainsPreferenceTest {
composeTestRule.onRoot().performClick() composeTestRule.onRoot().performClick()
composeTestRule.delay() composeTestRule.delay()
composeTestRule.onDialogText( composeTestRule
context.getString(R.string.app_launch_supported_domain_urls_title) .onDialogText(context.getString(R.string.app_launch_supported_domain_urls_title))
).assertIsDisplayed() .assertIsDisplayed()
composeTestRule.onDialogText("abc").assertIsDisplayed() composeTestRule.onDialogText("abc").assertIsDisplayed()
composeTestRule.onDialogText("def").assertIsDisplayed() composeTestRule.onDialogText("def").assertIsDisplayed()
} }
@@ -157,10 +157,11 @@ class InstantAppDomainsPreferenceTest {
const val PACKAGE_NAME = "package.name" const val PACKAGE_NAME = "package.name"
const val UID = 123 const val UID = 123
val INSTANT_APP = ApplicationInfo().apply { val INSTANT_APP =
packageName = PACKAGE_NAME ApplicationInfo().apply {
uid = UID packageName = PACKAGE_NAME
privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT uid = UID
} privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT
}
} }
} }

View File

@@ -28,6 +28,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.SettingsActivity import com.android.settings.SettingsActivity
import com.android.settings.core.BasePreferenceController import com.android.settings.core.BasePreferenceController
import com.android.settings.development.DevelopmentSettingsDashboardFragment import com.android.settings.development.DevelopmentSettingsDashboardFragment
import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spaprivileged.framework.common.userManager import com.android.settingslib.spaprivileged.framework.common.userManager
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Rule import org.junit.Rule
@@ -99,6 +100,7 @@ class DeveloperOptionsControllerTest {
composeTestRule.onNodeWithText( composeTestRule.onNodeWithText(
context.getString(com.android.settingslib.R.string.development_settings_title) context.getString(com.android.settingslib.R.string.development_settings_title)
).performClick() ).performClick()
composeTestRule.delay()
val intent = argumentCaptor<Intent> { val intent = argumentCaptor<Intent> {
verify(context).startActivity(capture()) verify(context).startActivity(capture())