是否可以使用JUnit4对接收器进行测试? 现在我的测试如下图所示:
@Test
fun `exits adding item mode after item added`() {
viewModel.onAddNewClick()
viewModel.newItemName.value = "New item name"
viewModel.onAddingConfirmed()
assertThat(viewModel.items.value?.contains(AddNewItem), Is(false))
assertThat(viewModel.newItemName.value, Is(""))
}
如您所见,我在每一行中都引用了viewModel
(要测试的类),它使代码混乱。
添加with(viewModel)
使其更干净:
@Test
fun `exits adding item mode after item added`() {
with(viewModel) {
onAddNewClick()
newItemName.value = "New item name"
onAddingConfirmed()
assertThat(items.value?.contains(AddNewItem), Is(false))
assertThat(newItemName.value, Is(""))
}
}
但是,它增加了一个缩进级别,如果我能避免在每种测试方法中重复这种模式,我也将感到高兴。
我尝试过天真地将接收者添加到测试方法签名中:
fun BaggageListViewModel.`exits adding item mode after item added`() {
但是JUnit运行器不允许这种解决方案,并在测试运行时抛出异常:
java.lang.Exception: Method when no items, displays no items message should have no parameters
有什么方法可以在测试功能中使用接收器?