Я недавно перенес свою реализацию предпочтений на использование androidx.preference
s.Это привело к сбою одного из моих инструментальных тестов, и я не нашел разумного обходного пути для его прохождения.
В этом тесте у меня есть диалоговое окно, в котором отображается ошибка, если выполняется какое-либо условие в настройках приложения.В этом тесте конкретное предпочтение отключено.Пользователь может нажать на ошибку, чтобы открыть конкретное предпочтение, и таким образом войти и изменить его.Проблема в том, что я не могу понять, как утверждать, что отображается правильный PreferenceFragment.
Неудачные тесты выглядят так:
@Test
fun whenWorklistNotEnabled_shouldDisplayWorklistNotEnabledMessage() {
val manager = PreferenceManagerImpl(InstrumentationRegistry.getInstrumentation().targetContext)
whenever(preferenceManagerSpy.worklistEnabled).thenReturn(false)
whenever(preferenceManagerSpy.openDicomSettings()).thenAnswer { manager.openWorklistSettings() }
launchWorklistDialog()
onView(withErrorMessageView(R.id.dialog_worklist_errorview))
.check(
matches(
allOf(
isDisplayed(),
withPrimaryErrorText(R.string.global_worklist_disabled_error),
withSecondaryErrorText(R.string.dialog_worklist_worklist_disabled_error_secondary_text)
)
)
)
.perform(ErrorMessageViewActions.actionOnSecondaryTextContainer(click()))
intended(
allOf<Intent>(
IntentMatchers.hasComponent(
ComponentName(
InstrumentationRegistry.getInstrumentation().targetContext,
SettingsActivity::class.java
)
),
IntentMatchers.hasExtra(
PreferenceActivity.EXTRA_SHOW_FRAGMENT,
WorklistFragment::class.java
)
)
)
}
Но как вы можете переписать его, чтобы он соответствовалопределенный PreferenceFragment, когда вы больше не используете реализацию PreferenceActivity?