测试 textview 将文本显示为 HTML
Testing textview displays text as HTML
我正在尝试测试片段中的文本视图。在我的UI中,textview通过使用HtmlCompat api显示了一个HTML文本,如下所示:
tvNoDeals.text = HtmlCompat.fromHtml(getString(R.string.no_deals), HtmlCompat.FROM_HTML_MODE_LEGACY)
我的目标是使用 Espresso 通过 android 测试 来测试此行为。为此,我需要使用模拟上下文从 strings.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
)
}
}
要获得您想使用的 Context
模拟
val context: Context = InstrumentationRegistry.getInstrumentation().targetContext
如果你想要资源
var resources: Resources = InstrumentationRegistry.getInstrumentation().targetContext.resources
//Then find the string using
resources.strings(your_id)
我正在尝试测试片段中的文本视图。在我的UI中,textview通过使用HtmlCompat api显示了一个HTML文本,如下所示:
tvNoDeals.text = HtmlCompat.fromHtml(getString(R.string.no_deals), HtmlCompat.FROM_HTML_MODE_LEGACY)
我的目标是使用 Espresso 通过 android 测试 来测试此行为。为此,我需要使用模拟上下文从 strings.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
)
}
}
要获得您想使用的 Context
模拟
val context: Context = InstrumentationRegistry.getInstrumentation().targetContext
如果你想要资源
var resources: Resources = InstrumentationRegistry.getInstrumentation().targetContext.resources
//Then find the string using
resources.strings(your_id)