Возможно ли иметь метод испытаний с приемником, использующим 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(""))
}
}
Это добавляет, однако, один уровень отступа, и я был бы рад, если бы я мог избежать повторения этого шаблона в каждом тестеmethod.
Я попытался наивно добавить получателя в сигнатуру метода тестирования:
fun BaggageListViewModel.`exits adding item mode after item added`() {
, но JUnit runner не разрешает такое решение и выдает исключение во время выполнения теста:
java.lang.Exception: Method when no items, displays no items message should have no parameters
Есть ли способ, позволяющий использовать приемник в функции тестирования?