Рефакторю свой легаси проект. UI Test Espresso, TDD, ООП, Kotlin

  Рет қаралды 1,968

easyCodeRu

easyCodeRu

Күн бұрын

Решил сегодня отрефакторить свой старый проект с легаси кодом. Легаси означает : нет юнит тестов. Для этого составил план действий:
1. написать юай тесты через Espresso
2. Написать тесты на новую вьюмодельку через TDD
3. Написать саму вьюмодельку
4. проверить что все работает
таймкоды
12:00 1 шаг: пишем юай тесты
53:57 2 шаг: пишем юнит тест на вьюмодель
1:18:20 3 шаг: пишем саму вьюмодель
2:28:20 4 шаг: проверяем что все работает
Репо на гитхабе
github.com/Joh...
курс по котлин с нуля по TDD и ООП
• Учим Kotlin с нуля чер...
тестовое задание андроид по TDD
• Тестовое задание на ан...
Подробно о том, как получить доступ к контенту
• Добро пожаловать на Ea...
Канал в телеграм
t.me/easyCodeRu
Мой профиль в телеграмме
t.me/JohnnySC

Пікірлер: 22
@XPAHUTEJlb1998
@XPAHUTEJlb1998 Жыл бұрын
Афигенное видео. Тупо 10/10 как и всегда. Продолжай в том же духе!)
@easyCodeRu
@easyCodeRu Жыл бұрын
Спасибо! Когда видео набирает много просмотров тогда и стимул есть что т делать
@easyCodeRu
@easyCodeRu Жыл бұрын
таймкоды 12:00 1 шаг: пишем юай тесты 53:57 2 шаг: пишем юнит тест на вьюмодель 1:18:20 3 шаг: пишем саму вьюмодель 2:28:20 4 шаг: проверяем что все работает
@frootyfloyd9398
@frootyfloyd9398 Жыл бұрын
Двигатель прогресса!
@zurbaevi
@zurbaevi Жыл бұрын
Отличный видосик!
@michaeliline9542
@michaeliline9542 Жыл бұрын
Огонь
@rugohideki6717
@rugohideki6717 Жыл бұрын
Бро, ты делаешь действительно крутые ролики, но хотелось бы увидеть твои ролики по выбору ide, работа в андроид студио, что такое SDK и с чем едят, Gradle, архитектуры приложений, XML, jetpack compose, пожалуйста, завези вот этой андроидовской движухи побольше. Есть на ютубе такой чел, зовут Алишев, многим заходят его курсы как платные, так и бесплатные, посмотри как он их делает - проанализируй, возможно что-то подобное запилишь, у тебя есть потенциал к тому, чтобы делать крутой контент, но 3-4 часа один ролик мало кто будет смотреть, лучше сделать по 30 минут на каждую тему 30 роликов отдельно, а не всё в одну кучу, спасибо 🙏
@easyCodeRu
@easyCodeRu Жыл бұрын
Ну давай порефакторь качественно за полчаса. Я посмотрю В реальной жизни же ты работаешь 8 часов блин. И это не куча, а настоящая работа Андроид разработчика! Хочешь смотреть обрывки информации или как это все вместе работает?
@rugohideki6717
@rugohideki6717 Жыл бұрын
@@easyCodeRu Не камень в твой огород, я посмотрел полностью ролик и он супер информативный, но хотелось бы, чтобы ты делал круче контент и он был разбит на части, часто вижу у тебя ролики по 2-4 часа, где ты пытаешься рассказать всё за один присест, но думаю так не работает, особенно новичкам тяжко усвоить, всех благ
@easyCodeRu
@easyCodeRu Жыл бұрын
В чем проблема поставить на паузу и посмотреть потом если сложно? Я не могу думать о том сколько времени прошло и на сколько частей разбивать если я рассказываю 1 цельную тему. Может поэтому новичкам сложно работать что они привыкают к 15минутным видосам, а потом оказывается на работе надо по 8 часов работать и 5 дней подряд
@chriswaytt6009
@chriswaytt6009 Жыл бұрын
Спасибо, классное видео, не все по проекту прям понятно, но в целом понравилось. Не могу пока конечно понять зачем эти тесты нужны ? на проектах обычно есть тестировщики, в процессе написания тоже все проверяешь, зачем еще эти тесты нужны не пойму?. Пока в голове у меня это ощущается как лишние действия. Но наверное я ошибаюсь, но пока не пойму, что я не правильно понимаю
@easyCodeRu
@easyCodeRu Жыл бұрын
Пишем без тдд Говнокодишь вьюмодель Пишешь юай Пишешь весь код Запустил : ничего не работает Фиксишь Запускаешь проект По кругу А теперь сравни с тдд Написал тесты на вьюмодель Написал вьюмодель Все прекрасно работает Написал весь остальной код Запустил : все работает Никаких кругов не наворачиваешь
@vladimirpavlov
@vladimirpavlov Жыл бұрын
А если тестировшик при ручном тестировании находит ошибку, ты ее добавляешь в свои тесты, фиксишь и потом уверен, что она не вернётся при последующих рефакторингах. Плюс тебе не нужно помнить, что там на экране годовой давности должно происходить-посмотрел тесты, вспомнил поведение. Плюс проверки нового функционала проходят быстрее, чем руками все тыкать. В общем, если твое приложение сложнее, чем забрать картинку с бэка и показать пользователю, то тесты будут удобны.
@easyCodeRu
@easyCodeRu Жыл бұрын
дай Бог если тестировщик хороший будет и проверит все как надо, а не как многие: молодые и неопытные и несопереживающие за качество проекта
@vladimirpavlov
@vladimirpavlov Жыл бұрын
Ну а при плохом тестировщике тем более без тестов не обойтись:)
@georgemagpie6033
@georgemagpie6033 Жыл бұрын
Жаль, но, пока что - не моего уровня контент. Я слишком мало знаю, что бы понимать и воспринимать информацию здесь на 100%
@easyCodeRu
@easyCodeRu Жыл бұрын
Вернись через месяц И этот месяц смотри тдд курс котлина
@CoRecYT
@CoRecYT Жыл бұрын
Я возможно что-то путаю, но для юнит-тестов же есть InstrumentationRegistry.getInstrumentation().context чтобы можно было передать контекст в конструкторы. В таком случае проблема с тестированием отпадает, разве нет?
@easyCodeRu
@easyCodeRu Жыл бұрын
обычные юнит тесты те, которые не требуют раннеров(смотри юнит тест вьюмодели), для инструментального контекста потребуется андроид раннер (смотри юай тест) юай тесты дольше по времени запускаются чем обычные юнит тесты и даже в этом случае я считаю некомильфо кидать контекст в конструктор. У тебя в проекте может быть до 100 вьюмоделей, на тестирование каждой писать инструментальный контекст и запускать в разы дольше : дорого по времени и силам разработчиков а вообще попробуй и сам все поймешь
@CoRecYT
@CoRecYT Жыл бұрын
@@easyCodeRu окей, проблему с раннером понял, но как тогда быть в случае, если допустим сообщение об ошибке должно быть локализовано? У тебя LoginState мог вернуть errorMessage, но только на одном языке. В случае, если хочется сделать мультиязычное приложение, то придётся в качестве возвращаемого значения использовать context.getString(R.string.loginErrorMessage) или что-то в этом роде. В таком случае опять встаёт проблема с тестированием. Или есть какие-то альтернативные решения подобной задачи?
@easyCodeRu
@easyCodeRu Жыл бұрын
проблем с множественными языками нет. Посмотри в проект и найдешь менеджер ресурсов
@CoRecYT
@CoRecYT Жыл бұрын
@@easyCodeRu но чтобы получить значение оттуда, необходимо использовать getString, а это метод контекста. Или вместо этого хранить непосредственно id ресурса?
Modus males sekolah
00:14
fitrop
Рет қаралды 25 МЛН
Brawl Stars Edit😈📕
00:15
Kan Andrey
Рет қаралды 46 МЛН
SHAPALAQ 6 серия / 3 часть #aminkavitaminka #aminak #aminokka #расулшоу
00:59
Аминка Витаминка
Рет қаралды 246 М.
Unit тестирование в Android c Clean architecture
21:09
Тимофей Коваленко
Рет қаралды 12 М.
(RU) Espresso Android UI Automation 👉Simple guide
28:25
Dmitry Yarygin
Рет қаралды 8 М.
7 Лет Опыта в IT | Что я Понял?
19:56
Vlad Mishustin
Рет қаралды 159 М.
Modus males sekolah
00:14
fitrop
Рет қаралды 25 МЛН