我正在尝试为我的撰写功能编写一些测试用例。我有一个最大值为 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")
}
但是虽然我可以看到输入是正确的,但测试失败了,而且 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)
)
最大长度在视图模型中处理。如果用户添加的字符数超过 16 个,视图模型将不会更新状态并保留旧值。