我\xc2\xb4m试图找出在函数成员上测试这种类型的最简单方法,我\xc2\xb4见过更复杂的情况,例如协程 - 单元测试 viewModelScope.launch 方法,但没有\xc2\xb4t解决
\n\n\nListScreenViewModel.kt
\n
@HiltViewModel\nclass ListScreenViewModel @Inject constructor(): ViewModel() {\n\n private var _itemsNumber = mutableStateOf(0)\n\n private var _testList = mutableStateOf(listOf<String>())\n val testList = _testList\n\n fun addItem() {\n viewModelScope.launch {\n _itemsNumber.value++\n _testList.value += (\n "Item ${_itemsNumber.value}"\n )\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\nListScreenViewModelTest.kt
\n
class ListScreenViewModelTest{\n\n private lateinit var viewModel: ListScreenViewModel\n\n @Before\n fun setup(){\n viewModel = ListScreenViewModel()\n }\n\n @Test\n fun `add an item to the list of items`(){\n val numberOfItems = viewModel.testList.value.size\n viewModel.addItem()\n …Run Code Online (Sandbox Code Playgroud) 如上所示,当用户打开键盘时,项目列表、文本输入字段和添加按钮会升起,我希望项目列表保持在原位,而文本输入字段和添加按钮也会升起。
代码:
活动:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
OlegarioLopezTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) { Navigation() }
}
}
}
Run Code Online (Sandbox Code Playgroud)
Navigation() 函数只调用 Composable
可组合:
@Composable
fun ListScreen(
viewModel: MainScreenViewModel,
navController: NavController
) {
LazyColumn{...}
MainTextField(viewModel)
AddButton(viewModel)
}
Run Code Online (Sandbox Code Playgroud) android viewmodel android-softkeyboard kotlin android-jetpack-compose