Я пытаюсь проверить текстовое представление в моем фрагменте. В моем пользовательском интерфейсе textview отображает текст HTML, используя HtmlCompat api, как показано ниже:
tvNoDeals.text = HtmlCompat.fromHtml(getString(R.string.no_deals), HtmlCompat.FROM_HTML_MODE_LEGACY)
Моя цель - проверить это поведение с помощью android Test, используя Espresso . Для этого мне нужно использовать фиктивный контекст, чтобы получить мою строку из файла. xml строки. У меня вопрос, я вынужден смоделировать контекст или есть другие способы проверить, соответствует ли строка?
class RetailDealsTest : RetailTest() {
lateinit var context: Context
@Before
fun setup() {
context = getInstrumentation().targetContext
}
@Test
fun testNoDealsUi() {
val retail = getRetail(totalDeals = 0)
launchScenario(retail)
onView(withId(R.id.lNoDeals))
.check(matches(isDisplayed()))
onView(withId(R.id.lDeals))
.check(matches(not(isDisplayed())))
onView(withId(R.id.tvNoDeals))
.apply {
check(
matches(
withText(
HtmlCompat.fromHtml(
context.getString(R.string.no_deals),
HtmlCompat.FROM_HTML_MODE_LEGACY
).toString()
)
)
)
}
Thread.sleep(10000)
}
private fun launchScenario(retail: Retail): FragmentScenario<RetailDealsFragment> {
val fragmentArgs = Bundle().apply {
putParcelable(Constants.RETAIL_ID, retail)
}
return launchFragmentInContainer<RetailDealsFragment>(
fragmentArgs
)
}
}