SC24EP05 Тестирование веб-приложений - Разработка проектов со Spring

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

Уголок сельского джависта

Уголок сельского джависта

Күн бұрын

Пікірлер: 69
@МаксимВдовин-я8ф
@МаксимВдовин-я8ф 10 ай бұрын
Еще не смотрел ролик, но сразу ставлю лайк и выражаю благодарность за проделанную работу!
@jigoku9592
@jigoku9592 10 ай бұрын
Очень качественный материал, достаточно хорошее погружение в тему касательно каждого ролика с этого канала! Лучший
@ЕгорБоровков-э8я
@ЕгорБоровков-э8я 7 ай бұрын
Огромное спасибо, что делитесь опытом! Благодаря таким людям наша страна еще держится!
@Hocorend
@Hocorend 6 ай бұрын
Спасибо, осилил урок спустя месяц, постоянно приходилось отвлекаться на что-то, а потом вспоминать, что же там было то неделю назад🤣 Урок познавательный
@МихаилМихаил-ф7у
@МихаилМихаил-ф7у 3 ай бұрын
Спасибо. Приятно смотреть ролики и обновлять свои знания.
@Константин-ы9к
@Константин-ы9к 10 ай бұрын
Лайк. Отличный русскоязычный контент.
@ГайратМадумаров-ю2я
@ГайратМадумаров-ю2я 10 ай бұрын
Спасибо большое это то что нам всем было нужно. Надеюсь не обойдёте стороной вопрос как прицепить капчу.
@Devivl
@Devivl 10 ай бұрын
Низкий поклон за отличный обучающий материал! Как всегда, очень интересно и наглядно. Саш, не думал выпускать короткие лёгкие ролики на отвлеченные темы? Например, на какой ОС работаешь, какие инструменты при разработке используешь, какими ресурсами пользуешься, какие-то лайфхаки по части разработки или ещё о чем-нибудь? Не призыв к действию, любопытно. Главное, чтобы основная тема канала развивалась в том же ключе и с тем же настроем в твоем лице с позитивом и без шумящих соседей) PS: очень быстро печатаешь на английской раскладке. Порой не успеваю) На русской - понятное дело, но на английской - моё почтение.
@shurik_codes
@shurik_codes 10 ай бұрын
Будучи программистом приходится больше писать на английском, так что это уже дело привычки) Насчёт коротких роликов думаю
@denisthestudent
@denisthestudent 8 ай бұрын
Спасибо за крутой урок! У меня не мог запуститься интеграционный тест на 36:50 APPLICATION FAILED TO START Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Добавил в Run Configuration теста переменную окружения SPRING_PROFILES_ACTIVE=standalone и всё заработало
@vollmond23
@vollmond23 7 ай бұрын
Либо перед классом теста можно добавить аннотацию @ActiveProfiles(value = "standalone")
@Hocorend
@Hocorend 6 ай бұрын
Спасибо, как обычно смотрю не туда, куда надо и туплю
@КаналКотикаиМаркушки
@КаналКотикаиМаркушки 10 ай бұрын
Спасибо. Суперкрутой видос. Несколько раз был в Кургане - классный город☺
@ДмитрийБусыгин-с3ф
@ДмитрийБусыгин-с3ф 10 ай бұрын
Саня, спасибо большое! Жирный лайкос!!! Никогда не мог мокать oauth авторизацию в тестах, теперь понял)
@АлександрТяпкин-п2ц
@АлександрТяпкин-п2ц 10 ай бұрын
Ура. В тестах не очень много опыта. То, что надо
@alekseizhitenev6020
@alekseizhitenev6020 6 ай бұрын
большое спасибо! тоже в свое время прихватил проблем с @Test не из нужного пакета) очень долго не мог понять, что происходит
@vladyslavhasporian2934
@vladyslavhasporian2934 Ай бұрын
thanks
@eugenz2334
@eugenz2334 10 ай бұрын
Серия видео огонь 🔥🔥🔥🔥🔥🔥
@-202..5
@-202..5 9 ай бұрын
лучший! спасибо за видео
@user-kuzya2023
@user-kuzya2023 12 күн бұрын
Привет. Не совсем понял, как мавен понимает где модульные тесты, а где интеграционные? И всё-таки, эти тесты (модульные и интегр.) должны вместе выполняться при сборке или в каких-то ситуациях по разному, так как интегр.тесты занимают долгое время?
@denisskyter4526
@denisskyter4526 10 ай бұрын
Александр , для тестов rest api сервиса , для контроллеров лучше использовать интеграционные тесты или модульный ?
@shurik_codes
@shurik_codes 10 ай бұрын
и то и другое
@svyatoiambrozii
@svyatoiambrozii 8 ай бұрын
Еще вопрос возник - при интеграционном тестировании rest где требовался jwt декодер если самому написать подобный тест в системе с jwt токенами авторизации, вместо oauth2 то так же будет работать или @WithMockUser лучше для такого?
@shurik_codes
@shurik_codes 8 ай бұрын
Всё зависит от того, насколько подробно хочется протестировать безопасность приложения. Если хочется протестировать полностью цепочку фильтров, что в целом правильно, когда есть какие-то самописные компоненты, то нужно обходиться без @WithMockUser и аналогичных аннотаций. Последние просто создают контекст безопасности с указанными параметрами и фактическая аутентификация не происходит.
@viewer_evgeniy
@viewer_evgeniy 8 ай бұрын
А почему зависимости дублируются в модульных pom файлах? Разве не стоит в случае, когда одни и те же зависимости используются в разных модулях - вынести их в общий (родительский) pom?
@БогданПрядко-щ7л
@БогданПрядко-щ7л 6 ай бұрын
здравствуйте не очень понятно как подключить бд через докер и testcontainers у вас есть на канале видео,которое затрагивает данную тему ?
@Владчук-щ8з
@Владчук-щ8з 6 ай бұрын
здравствуйте. разобрались? потому что я сейчас сижу у меня этот контейнер (testcontainers/ryuk) никак на виндовс не запускается, можете помочь, если разобрались
@shurik_codes
@shurik_codes 4 ай бұрын
самый простой вариант - через интеграцию TC в JDBC, в этом случае достаточно в spring.datasource.url добавить префикс tc: jdbc:tc:postgresql:16:///database_name
@svyatoiambrozii
@svyatoiambrozii 9 ай бұрын
Отличное видео! Спасибо вам! Пытаюсь сделать то же самое, но опять столкнулся с проблемой - созданный в тесте по видео, он не отдает собственно метод createProduct, а при копировании выдает Cannot access com.example.managerapp.controller.ProductsController и подчеркивает красным, а при запуске теста java: method createProduct in class com.example.managerapp.controller.ProductsController cannot be applied to given types; А если убрать this обращение к controller и в аргументе response, то тест работает
@kazbowski
@kazbowski 10 ай бұрын
эх, вот бы на работу затащить testcontainers :( (у нас оракл)
@user-007-1
@user-007-1 10 ай бұрын
Я отменил поход на Дюну, когда увидел, что вышел новый ролик) В видео тестконтейнеры поднимаются мгновенно, и даже неявно, у меня почему-то на винде всё поднимается долго и с кучей исключений, но мы явно делаем базовый класс-родитель, в котором поднимается контейнер бд и брокера очередей, от которого потом наследуются интеграционные тесты. Добавление кафки в проект не планируется?
@shurik_codes
@shurik_codes 10 ай бұрын
Нет, кафки в рамках данного проекта не будет. Про кафку я буду рассказывать отдельно.
@БогданПрядко-щ7л
@БогданПрядко-щ7л 10 ай бұрын
Здравствуйте Подскажите ,пожалуйста ,какие книги читать java backend разработчику Имеется ввиду человеку ,у которого уже неплохая база есть Спасибо заранее ❤
@shurik_codes
@shurik_codes 10 ай бұрын
- Книги Роберта Мартина (в первую очередь "Чистый код" и "Чистая архитектура") - Паттерны объектно-ориентированного программирования - Книги про алгоритмы и структуры данных (Грокаем алгоритмы, Алгоритмы Скиены и Стивенса) - Книги посвящённые предметно-ориентированному проектированию (синюю и особенно красную) - Реактивные шаблоны проектирования
@AlexSmile-y2x
@AlexSmile-y2x 9 ай бұрын
@@shurik_codes кстати, Александр, насчет DDD, как относитесь к rich model, использовал ли хоть раз хотя бы в пет-проектах? имхо крутой подход - очень упрощает написание фич, снижает баги и делает кодовую базу валидации модели и всех бизнес-процессов более естественной
@shurik_codes
@shurik_codes 9 ай бұрын
@@AlexSmile-y2x Отношусь положительно, использую в реальных проектах
@AlexSmile-y2x
@AlexSmile-y2x 9 ай бұрын
@@shurik_codes как считаете, почему этот подход менее популярен, чем стандартный с анемичной моделю?
@shurik_codes
@shurik_codes 9 ай бұрын
@@AlexSmile-y2x сложнее во многих аспектах проектирования и проработки
@AlexSmile-y2x
@AlexSmile-y2x 9 ай бұрын
Помимо тестирования логики кода, часто используются линтеры и всякого рода дополнительные стат.анализаторы, но тут у Вас об этом нет, вы не используете такое в своих проектах?
@shurik_codes
@shurik_codes 9 ай бұрын
Использую сонар в своих проектах
@AlexSmile-y2x
@AlexSmile-y2x 9 ай бұрын
@@shurik_codes а почему в этом цикле видео не показали? или планируется во втором сезоне?🙂 это же все таки важная часть разработки
@shurik_codes
@shurik_codes 9 ай бұрын
Изначально не было в планах, может быть, ролик появится как продолжение серии
@SlevySoddik
@SlevySoddik 10 ай бұрын
Спасибо за видео! и как обычно вопрос: что делать если функционал который нужно протестировать зависит от другого? пример: есть рабочий процесс из 10 шагов(раскидано по 10-15 API), последний шаг без добавления и обработки данных по всем предыдущим шагам протестировать не возможно. Вариант решения видел такой - поднят докер тестконтейнер и шарит БД на все тестируемые методы(позитивные и негативные сценарии) - насколько это ок? хоть вариант и рабочий, но выглядит не очень.
@user-007-1
@user-007-1 10 ай бұрын
Замокать эти апи, как вариант. Вайрмок вроде позволяет задать джсоном ответ на джсон-респонс.
@SlevySoddik
@SlevySoddik 10 ай бұрын
@@user-007-1 к сожалению ответом от API был не json, а csv
@shurik_codes
@shurik_codes 10 ай бұрын
Есть два подхода: 1. Тестирование всего бизнес-процесс, такой подход в целом популярен при написании тестов для BPM. 2. Индивидуальное тестирование каждого шага. В целом я не вижу в этом проблем - состояние системы перед выполнением шага можно смоделировать, заполняя БД тестовыми данными.
@GM11
@GM11 9 ай бұрын
Спасибо за видео! Узнал много нового! Хотел бы уточнить один вопрос. Юнит тесты нельзя писать в интеграционных тестах? Ведь в идее можно по отдельности тестировать каждый метод. Чем это не юнит тест?)
@shurik_codes
@shurik_codes 9 ай бұрын
Важна разница между модульными и интеграционными тестами. Модульные должны максимально изолированно тестировать разрабатываемую логику и должны выполняться как можно быстрее. Интеграционные тесты в свою очередь тестируют связки компонентов и их взаимодействие с какими-то внешними инструментами (фреймворками, базами данных и т.д.), следовательно, они более ресурсоёмкие и занимают больше времени. Можно ли писать модульные тесты в интеграционных тестах? По факту - да, никто и ничто не запрещает этого делать. Но для запуска интеграционного теста (в контексте Spring) требуется запуск контекста приложения в том или ином его виде, что требует времени и ресурсов. И в результате получается какая-то странная ситуация - мы сначала запускаем контекст приложения, а затем выполняем модульный тест, которому этот контекст по факту не нужен. Более того, при таком подходе может и будет возникать ситуация, когда сначала выполняется какое-то количество интеграционных тестов, а лишь затем очередь доходит до модульных, а одна из задач модульных тестов заключается в как можно более раннем выявлении ошибок. Поэтому я стараюсь отделять модульные тесты от интеграционных и выполнять их на разных этапах сборки проекта (test и verify соответственно в Maven). Если ошибка выявляется модульными тестами, то это будет происходить достаточно быстро на ранних этапах сборки проекта, ещё до того, как сборка дойдёт до выполнения интеграционных тестов. Это в целом даже выгоднее с точки зрения использования ресурсов в CI/CD.
@hurricane-rus
@hurricane-rus 7 ай бұрын
Не понял, зачем при настройке тест-контейнеров в ямле задавать для них url, username и password - все эти данные генерятся контейнером автоматически, и все равно прямого доступа к поднимаемой бд не будет. По-моему оптимальнее делать отдельный конфигурационный класс, который имплементит ApplicationContextInitializer, а дальше просто подключать его через ContextConfiguration в те классы, где есть тесты с тест-контейнерами
@shurik_codes
@shurik_codes 7 ай бұрын
Логин/пароль указывать не нужно, да, но вот создавать отдельный конфигурационный класс оптимальнее явно не будет, т.к. для запуска контейнера с БД достаточно указать специфичный для TC URL: java.testcontainers.org/modules/databases/jdbc/#database-containers-launched-via-jdbc-url-scheme
@danil2590
@danil2590 8 ай бұрын
Жизненный момент на моменте 49:00 😂
@ГенрихАвдеев-ь9з
@ГенрихАвдеев-ь9з 10 ай бұрын
@shurik_codes Не могу понять, почему контекст интеграционного теста в вашем примере запускается без проблем. У меня требует dataSource. Анализ вашего репозитория не выявил каких-то специальных настроек, конфигов или моков в тестовом окружении. Я явно указал настройки постгри в ямле тестового окржения, после этого ИТ заработал, но хотелось бы понять, в чем магия, почему у вас работает без этой настройки.
@shurik_codes
@shurik_codes 10 ай бұрын
47:40
@ГенрихАвдеев-ь9з
@ГенрихАвдеев-ь9з 10 ай бұрын
@@shurik_codesДа, я подумал, что нужно уточнить, что речь про модуль менеджера, а не каталога, но отвлекся и не поправил. С каталогом все понятно, а в менеджере нет тестового контейнера постгреса, нет настроек в ямле, при этом работает в видео, но не работает локально.
@ji1ja
@ji1ja 10 ай бұрын
@@ГенрихАвдеев-ь9з Уберите депенденси spring-data из проекта менеджера, она там не нужна)
@romanchernukha2583
@romanchernukha2583 10 ай бұрын
@@ГенрихАвдеев-ь9з аналогичная ситуация
@aleksandrguskov5908
@aleksandrguskov5908 10 ай бұрын
@@ГенрихАвдеев-ь9з Аналогичная ошибка возникает. Удалось разобраться?
@Царь_Грядет
@Царь_Грядет 29 күн бұрын
почему происходит конфликт айдишников с файла product.sql и реальными данными в бд? не дает положить id1,2,3 и тд, говорит уже имеется. дроп бд спасает, но все же это ведь вообще не выход) после окончания тестов, как и предполагалось, бд пустая, а сиквен заполняется.
Маусымашар-2023 / Гала-концерт / АТУ қоштасу
1:27:35
Jaidarman OFFICIAL / JCI
Рет қаралды 390 М.
Вопрос Ребром - Джиган
43:52
Gazgolder
Рет қаралды 3,8 МЛН
Гексагональная архитектура и микросервисы #java #microservices #hexagonal
1:22:47
Уголок сельского джависта
Рет қаралды 10 М.
Spring Boot APIs Gateway in 20 Minutes
22:50
The IT Wizard
Рет қаралды 15 М.
SC24EP07 Разработка реактивных REST-сервисов - Разработка проектов со Spring
1:05:30
10 Spring and Spring Boot Common Mistakes You Need To STOP
15:49
Amigoscode
Рет қаралды 164 М.
О цикле роликов - Разработка проектов со Spring
16:35
Уголок сельского джависта
Рет қаралды 14 М.
Что такое Framework простыми словами?
9:51
Sergey Nemchinskiy
Рет қаралды 194 М.