Юнит тест для View Model в Android

  Рет қаралды 7,915

Тимофей Коваленко

Тимофей Коваленко

Күн бұрын

Пікірлер: 49
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
СОДЕРЖАНИЕ: 00:00:00 - введение 00:0:54 - разбираем ViewModel (MVVM) 00:03:20 - пишем Юнит тест 00:06:37 - применяем Mockito 00:08:05 - Unit тест 00:25:39 - заключение
@КиемМирзоевич
@КиемМирзоевич 2 жыл бұрын
Здравствуйте , как к вам в курсы записаться?
@GliderJPA
@GliderJPA 2 жыл бұрын
пытался по сайту записаться на курсы, вы работаете еще?
@MG-it7nx
@MG-it7nx Жыл бұрын
Посмотрел все видео по архитектуре и хочу сказать, что, Тимофей, ты настоящий мужик и просто красавчик!) Без воды, без всякой нудятины и разглагольствований, без дурацких картинок с мемами, все четко и по делу. Жму руку!)
@jacksaf8546
@jacksaf8546 2 жыл бұрын
просто титанический труд, видно, что человеку по кайфу то, что он делает. мало того, что учишься, еще и заряжаешься позитивным настроением от автора =)
@haykmkrtchyan7093
@haykmkrtchyan7093 7 ай бұрын
Великолепно 🤩 Спасибо за бесплатный курс Тимофей, огромная благодарность 🙌
@azatsabirov863
@azatsabirov863 2 жыл бұрын
Долгожданное видео. Конечно лайк, все на уровне!
@dreamer6228751
@dreamer6228751 2 жыл бұрын
Хорошо, что продолжается публикация видео. Спасибо за информацию.
@PavelStr-x5w
@PavelStr-x5w 10 ай бұрын
Большое спасибо за такое полезное видео ! :)
@chriswaytt6009
@chriswaytt6009 2 жыл бұрын
Тимофей шикарно объясняешь давай больше уроков, очень нравится, жаль что так мало видео.
@АлександрРоманов-р5ф
@АлександрРоманов-р5ф 2 жыл бұрын
О наконец-то, обожаю ваши видосы
@enkyinneme
@enkyinneme 2 жыл бұрын
Крутое видео!Очень понятно и информативно!
@mikeshilovski1512
@mikeshilovski1512 2 жыл бұрын
Один из лучших каналов
@ivanstrelka3448
@ivanstrelka3448 2 жыл бұрын
Спасибо!! ты крутой 🥰
@McMouse88
@McMouse88 2 жыл бұрын
Тимофей жалко что пропали, очень годный, интересный и качественный контент снимаете
@kostyachu
@kostyachu Жыл бұрын
Спасибо!
@gazim_soliev
@gazim_soliev 2 жыл бұрын
Эх, а хотелось бы посмотреть тесты с suspend функциями и корутинами во ViewModel
@avada-kentaura
@avada-kentaura Жыл бұрын
Используй mockk для suspend функций вместо mockito. Этого будет достаточно
@ИванДаунитис
@ИванДаунитис 2 жыл бұрын
Добрый день, подскажите, новые видео собираетесь записывать, если да, то на какую тему, спасибо
@igornovikov6337
@igornovikov6337 2 жыл бұрын
Тимофей, сделайте пожалуйста урок по MVI паттерну с использованием ViewModel и с обработкой side эффектов без использования сторонних библиотек типа Orbit. В сети отсутствуют хорошие туториалы, а на русском языке тем более.
@chriswaytt6009
@chriswaytt6009 2 жыл бұрын
Здравствуйте. Как вас найти на GitHub ?
@kafychannel
@kafychannel 2 жыл бұрын
Здравствуйте,спксиьо за видео! 9:16 - тогда вы будете нарушать принцип DRY
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Далеко не всегда стоит гнаться за переиспользованием кода. Часто лучше сделать незначительный копипаст, но зато иметь независимый код.
@Chybakut2004
@Chybakut2004 2 жыл бұрын
Тимофей, спасибо большое за объяснения! Особенно важным показался нюанс, что нельзя использовать константы из кода приложения в тестах 👍 В документациях про это не пишут 😁 Однако есть вопрос не теме. Почему публичные методы ViewModel-и названы конкретными действиями (save, load), а не событиями (onSaveButtonClicked, onLoadButtonClicked)? ViewModel же должна реализовать события с View и управлять View, а с конкретными названиями методов ViewModel не реализует события, а предоставляет интерфейс для выполнения конкретных действий. И тогда, если потребуется поменять действие, вызываемое при событии, то придется отредактировать как ViewModel, так и реализацию View (вызывать другой метод ViewModel-и), что является нарушением принципа единственной ответственности у View. У её реализации теперь есть две причины для изменения - при смене дизайна, при смене бизнес-логики. Это так же потребует отредактировать существующие тесты у View. А если называть методы ViewModel-и абстрактно, то при изменении действия, которое должно вызываться при событии, придется редактировать только ViewModel. А если реализация View и затронется, то только для добавления нового кода, а не для смены старого.
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Да, все верно говорите. В примере просто упростил, что-бы не писать длинное название, но по хорошему так и нужно их называть.
@Chybakut2004
@Chybakut2004 2 жыл бұрын
@@TimofeyKovalenko спасибо! 👍
@MihMas
@MihMas 2 жыл бұрын
Добрый день, уважаемый Тимофей! У меня вопрос: функции ViewModel.save() и ViewModel.load() модуля App обращаются к функциям UseCase.execute() модуля Domain, а так же напрямую к моделям модуля domain. Не нарушает ли это принципы чистой архитектуры? Быть может для модуля App нужно было создать свою модель и репозиторий по аналогии с модулем Data?
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
В большинстве случаев это уже избыточно. App в любом случае получит именно домейн ентити к себе, а дальше можно их замапить в UI ентити, которую вы уже доставите во view, но это необходимо только что-бы дополнительно подготовить данные для UI, например если там сложная ентити и вы хотите ее упросить, что бы View могла просто брать данные и отображать их. Про репозиторий не понял, как вы его собираетесь использовать из ViewModel?
@pumaelgatosiberian5047
@pumaelgatosiberian5047 Жыл бұрын
очень жаль, что нет ссылки на гитхаб
@floydoman27
@floydoman27 2 жыл бұрын
Добрый день! Будет ли ещё набор на курс "Комплексный курс по Java, Kotlin и Android".
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
К сожалению в этом году технически не получается заниматься преподаванием (((. Есть группа для тех, кто хочет пойти на обучение: t.me/+ecDWHDUu9ak2N2I6 Там будет информация, как только старт будет.
@mihailpalminschi
@mihailpalminschi 2 жыл бұрын
Спасибо за уроки, хотел бы записаться на ваши курсы, но на сайте написано что мест нету. Когда будет возможно записаться?
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Да, к сожалению временно (весна 2022) студентов новых не беру. Но вы можете оставить заявку, я всех помечаю и как только, есть возможность, со всеми связываюсь.
@АлександрЗацепин-ш6ы
@АлександрЗацепин-ш6ы 2 жыл бұрын
Привет. На эти тесты получаю Test events were not received, а тесты для domain модуля прошли успешно. Почему эти тесты не работают?
@АндрейБаранов-ж3э
@АндрейБаранов-ж3э 2 жыл бұрын
Убедитесь, что вы прописали в build.gradle test { useJUnitPlatform() }
@ЛевШаповалов-х5в
@ЛевШаповалов-х5в 2 жыл бұрын
Продолжаете ли вы набор на ваш курс потому что на сайте написанно что мест нет. Это вы уже набрали людей и через какое то время места появятся или набор вообще закрыт?
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Время от времени появляются места. Очень много желающих, физически не могу столько принять (((.
@purplehazer417
@purplehazer417 2 жыл бұрын
Привет. Сделаешь видео по модуляризации не по слоям, а по фичам? и по навигации между модулями фичей? где-то писал, что планировал такое видео
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Да, на вкладке сообщество, там как раз голосование идет, какие темы дальше разобрать.
@kafychannel
@kafychannel 2 жыл бұрын
Вы работаете андроид разработчиком? Или андроид для вас хобби, давно смотрю вас и хотелось всё время узнать)
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Конечно работаю) откуда же все это можно узнать, если не из опыта)). А преподавание - это как раз таки хобби.
@beeline09
@beeline09 2 жыл бұрын
Видео интересное, случайно наткнулся на него, но... Я один не понимал и не понимаю смысла этих тестов? Ведь простым дебагом или, на крайняк, логом, можно это все сделать. Да и как-то всё очень очевидно. Мне уже несколько лет никто толково не может объяснить их смысл. Кодинг ради кодинга? Чтоб обосновать свою зарплату? Зачем эти бессмысленные телодвижения?
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Как вы собрались использовать дебаг или логи для этого? :) Эти тесты как правило запускаются в автоматическом режиме, перед релизом приложения, после реализацию нового функционала или при каждом мердж реквесте. То есть, вы написали эти тесты и забыли про них), работаете дальше с другими задачами. Но, если случайно испортился старый код, то об этом быстро станет известно, когда тесты на сервере упадут.
@beeline09
@beeline09 2 жыл бұрын
@@TimofeyKovalenko как это как? Вы не можете отследить записалось в шэйрдпреференс что-то или нет? Ну ок, тест сломается, если кто-то куда полезет и что-то сломает в плане логики. Но почему кто-то должен что-то ломать? Я работаю в крупном проекте и мы прекрасно обходимся без тестов. Я представляю сколько моего драгоценного времени было бы потрачено впустую, если бы я ещё и тестами занимался...
@trolofoks
@trolofoks Жыл бұрын
@@beeline09 Если проект крупный то на деле тесты сэкономят больше времени чем уйдет на их написание.
@dannyregster1120
@dannyregster1120 2 жыл бұрын
эх думал тут с корутинками:(
@TimofeyKovalenko
@TimofeyKovalenko 2 жыл бұрын
Пока еще нет, тут только базовые вещи.
@trolofoks
@trolofoks Жыл бұрын
Кому нужны варианты с разными параметрами вот код @ParameterizedTest @ValueSource(booleans = [true, false]) fun `should try to save and return success status`(saveResult: Boolean){...}
Тестирование JUnit в Clean Architecture Android
19:06
Тимофей Коваленко
Рет қаралды 6 М.
Что такое Unit-тесты?
9:58
Merion Academy
Рет қаралды 38 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
Enceinte et en Bazard: Les Chroniques du Nettoyage ! 🚽✨
00:21
Two More French
Рет қаралды 42 МЛН
Quando eu quero Sushi (sem desperdiçar) 🍣
00:26
Los Wagners
Рет қаралды 15 МЛН
Android Testing ViewModel - Common problems
11:30
Renaro Santos
Рет қаралды 8 М.
Шаблон MVVM по-простому. ViewModel. AndroidViewModel. AndroidViewModelFactory
14:37
Мобильный разработчик | Юрий Петров | Flutter
Рет қаралды 25 М.
Сервис HTTP в Angular.
16:45
Web-dizain
Рет қаралды 8
MVI в Android на практике
19:20
Тимофей Коваленко
Рет қаралды 16 М.
Binder - как устроена работа с несколькими процессами в Android
56:44
Android Broadcast. Все об Андроид разработке
Рет қаралды 30 М.
Dagger в Android на практике с MVVM
32:41
Тимофей Коваленко
Рет қаралды 19 М.
Unit тестирование в Android c Clean architecture
21:09
Тимофей Коваленко
Рет қаралды 13 М.
MVVM в Android на практике
41:32
Тимофей Коваленко
Рет қаралды 50 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН