我在可组合项中有一个 LazyColumn,我想检查该 LazyColumn 中的每个项目是否存在。
这是我的可组合项:(注意:实际上在我的实际情况中,每个项目都有不同的组件,我只是使其相似以简化问题)
@Composable
fun HomeScreen(){
LazyColumn(){
item {
HomeBanner()
Text("Test1",Modifier.testTag("tag1"))
}
item {
HomeBanner()
Text("Test2",Modifier.testTag("tag2"))
}
item {
HomeBanner()
Text("Test3",Modifier.testTag("tag3"))
}
item {
HomeBanner()
Text("Test4",Modifier.testTag("tag4"))
}
item {
HomeBanner()
Text("Test5",Modifier.testTag("tag5"))
}
item {
HomeBanner()
Text("Test6",Modifier.testTag("tag6"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是它的样子:
这是我的测试课:
@ExperimentalCoroutinesApi
@ExperimentalMaterialApi
@ExperimentalPagerApi
@HiltAndroidTest
@RunWith(AndroidJUnit4::class)
class HomeScreenTest {
@get:Rule(order = 0)
val hiltRule = HiltAndroidRule(this)
@ExperimentalMaterialApi
@get:Rule(order = 1)
val composeTestRule = createAndroidComposeRule<MainActivity>()
@Inject
lateinit var mainRepository: MainRepository
@Before
fun setup() {
hiltRule.inject()
}
@Test
fun property_list_is_displayed() …Run Code Online (Sandbox Code Playgroud) android android-testing android-jetpack-compose lazycolumn android-jetpack-compose-testing
我是 Jetpack Compose 测试的新手,并试图弄清楚如何访问 an 的值OutlinedTextField以对它们执行 Instrumentation 测试:
我无法弄清楚访问和检查 EditField 的 SemanticsNode 中的某些值的语法。
我正在使用以下仪器测试:
@Test
fun NameTextField_LongInput_CompleteStatusAndLabelCorrect() {
composeTestRule.setContent {
ComposeTemplateTheme {
NameTextInput(name = "RandomName123", onNameInfoValid = { isComplete = it })
}
assertEquals(isComplete, true)
// This is accessing the label text
composeTestRule.onNodeWithText("Name").assertIsDisplayed()
//How do I access the Editable text?
//composeTestRule.onNodeWithEditableText("RandomName123") // How do I do something like this?!?!123
}
}
Run Code Online (Sandbox Code Playgroud)
我想弄清楚如何访问这棵树中的各个项目:
printToLog:
Printing with useUnmergedTree = 'false'
Node #1 at (l=0.0, t=110.0, r=1080.0, b=350.0)px
|-Node #2 at …Run Code Online (Sandbox Code Playgroud) android android-testing android-espresso android-jetpack-compose android-jetpack-compose-testing
我正在尝试为我的撰写功能编写一些测试用例。我有一个轮廓文本字段,最大值为 16 个字符。所以我想测试一下这个功能。这是测试:
@Test
fun checkMaxTaxCodeLength_16Character() {
val taxCode = composeRule.onNodeWithTag(testTag = AUTHENTICATION_SCREEN_TAX_CODE_EDIT_TEXT)
for (i in 'A'..'Z')
taxCode.performTextInput(i.toString())
taxCode.assertTextEquals("ABCDEFGHIJKLMNOP")
}
Run Code Online (Sandbox Code Playgroud)
但是,虽然我可以看到输入是正确的,但测试失败,并且似乎assertTextEquals无法正常工作。所以:
这是文本字段的代码:
OutlinedTextField(
value = state.taxCode,
maxLines = 1,
onValueChange = { string ->
viewModel.onEvent(
AuthenticationEvent.TaxCodeChanged(string)
)
},
label = {
Text(text = stringResource(id = R.string.tax_code))
},
modifier = Modifier
.fillMaxWidth()
.testTag(TestingConstant.AUTHENTICATION_SCREEN_TAX_CODE_EDIT_TEXT)
)
Run Code Online (Sandbox Code Playgroud)
最大长度在视图模型中处理。如果用户添加的字符超过 16 个,视图模型将不会更新状态并保留旧值。
testing android android-jetpack-compose android-jetpack-compose-testing
我正在使用Coil for Compose加载图像,如下所示。
@Composable
fun SvgImageSample() {
val painter = rememberAsyncImagePainter(
model = ImageRequest.Builder(LocalContext.current)
.decoderFactory(SvgDecoder.Factory())
.data("https://someserver.com/SVG_image.svg")
.size(Size.ORIGINAL)
.build()
)
Image(
painter = painter,
modifier = Modifier.size(100.dp).testTag("myImg"),
contentDescription = null
)
}
Run Code Online (Sandbox Code Playgroud)
图像已正确加载。现在,我想编写一个测试来检查图像是否已加载。有没有现成的断言 ?
像这样的东西:
class MyTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun checkIfTheImageLoads() {
composeTestRule.setContent {
MyAppThemeTheme {
SvgImageSample()
}
}
composeTestRule.onNodeWithTag("myImg")
.assertCoilImageIsLoaded() // <- this is what I want
}
}
Run Code Online (Sandbox Code Playgroud) android android-jetpack-compose coil android-jetpack-compose-testing