Кирилл Толкачёв - Тестируем и плачем вместе со Spring Boot Test

  Рет қаралды 21,635

Heisenbug

Heisenbug

5 жыл бұрын

Ближайшая конференция - Heisenbug 2024 Autumn, 10 октября (Online), 17-18 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Tq0vcu
- Ближайшая конференция: Heisenbug 2023 Autumn - 10-11 октября (online), 15-16 октября (offline)
Подробности и билеты: bit.ly/3qd3swV
- - -
. . .Писать тесты с помощью Spring иногда не так просто, как кажется из примеров в статьях или из видео в интернете. Часто совсем непонятно, что за магия с контекстом там творится. Кирилл поможет разобраться с этим и разложит все знания по полочкам. Если ты видел аннотации в коде автотестов: @DirtiesContext, @ActiveProfiles, @SpringBootTest и др. и не понимал, что инициализируется - это тот самый доклад, что поможет разобраться.
Разработчик и тесты. Есть разные мнения, и Кирилл придерживается того, что разработчик должен создавать тесты. В этом докладе речь пойдёт про тесты, которые помогают разработчику писать код и верифицировать уже написанный код на уровне одного приложения.
Кирилл как Java-разработчик будет делать это с помощью привычных всем фреймворков JUnit и spring-boot-test, делая акцент на особенностях работы spring-boot-test при тестировании на границе различных компонент приложения (@RestController, @Component, @Service, Repository...). Он попробует развеять некоторую магию, которую фреймворк творит за вас, чтобы добавить осознанности в написание ваших тестов.

Пікірлер: 19
@Boyarsskiy
@Boyarsskiy 4 жыл бұрын
Жесть в такие тесты потом смотреть - заглядываешь, а там куча конфигов своих, что-то куда-то инжектится, откуда-то берётся. По идее тесты должны быть живой документацией к коду. Запутался в коде, глянул в тесты, запустил, подебажил и въехал. А тут отдельный мир со своим контекстом и конфигами.
@azamatk4302
@azamatk4302 3 жыл бұрын
Spring сам по себе такой. В большинстве других фреймворках (на других языках) просто устанавливаешь библиотеку и юзаешь. А тут нужно конфиг файл запилить, содержимое которого только гуглежом можно получить, далее бины бины и бины, аннотации аннотации и аннотации.
@dgvgfg
@dgvgfg 4 ай бұрын
далеко не всегда по тестам понимаешь что тест делает. Тем более обычно новичка (ну меня точно) поставили на испыталку писать тесты к 30 классам довольно сложным с Spark логикой к которой просто не было тестов. Да и тесты такая штука что можно написать 2+2 = 5 и всё будет проходить ещё так написать что никто не поймёт тесты это же ты сам ручками вводишь что ожидаешь.
@GeorgiyRyabov
@GeorgiyRyabov 5 жыл бұрын
5/5 для QA, который не хочет читать спринговую документацию
@newlinebraces2872
@newlinebraces2872 Жыл бұрын
Когда Кирилл без Жени все так спокойно, потихоньку xD
@ashcs1
@ashcs1 2 жыл бұрын
Господины критики, вам это не то и то не это. Ну сделайте лучше и выложите в общий доступ. Кирилл, спасибо за материал.
@alexgorodecky1661
@alexgorodecky1661 7 ай бұрын
Вот бы час отлаживать обвязку к тестам 😆
@caffeinejavacode1475
@caffeinejavacode1475 2 жыл бұрын
Зачем сужать скоуп SpringBootTest если тесты всего приложения будут в этом скоупе, а контекст только один для всех тестов
@zigzag2341
@zigzag2341 3 жыл бұрын
Лучше бы показали как правильно тестировать на разных слоях, (как, куда и для чего писать юнит, интеграционные), а не вот это все, и кто вообще зависимости от классов делает ?
@caffeinejavacode1475
@caffeinejavacode1475 2 жыл бұрын
есть ли видео которое обьясняеет то что вы написали?
@kotojava
@kotojava Жыл бұрын
дело в том что ответ кроется не в какой то специфике спринга или его тестирования. ответ кроется в пирамиде тестирования (и реалиях в которых пишется код, например если времени мало а хочется побольше покрытия то будут использоваться e2e тесты с максимально "настоящей" интеграцией). В остальных случаях нужно выбирать золотую середину между количеством тестов (а как следствие качеством покрытия) и затраченным временем (в тч временем на поддержку)
@kotojava
@kotojava Жыл бұрын
ребята поскажите пожалуйста если мы используем @SpringBootTest и в нем используем @TestConfiguration то если ли способ сказать спрингу чтобы бины из тестовой конфигуарции были всегда в приоритете над обычной конфигурацией? без эксплиситного указания @Primary?
@caffeinejavacode1475
@caffeinejavacode1475 2 жыл бұрын
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) и можно без TestContainers в некоторых простых случаях
@kotojava
@kotojava Жыл бұрын
по моему это самый худший вариант. тут без гугления никак не разобраться. спринг и так вынуждает изучать его тонкости так теперь и на каждую автоконфигурацию нужно гуглить.
@ii99xt1
@ii99xt1 Жыл бұрын
Есть особенности синтаксиса SQL. И то что работает на проде (например Оракле) может не работать в H2
@sromankov6102
@sromankov6102 5 жыл бұрын
можно ссылку на этот код?
@lenorium8284
@lenorium8284 5 жыл бұрын
github.com/lavcraft/spring-boot-curse
@alexeystaroverov4804
@alexeystaroverov4804 4 жыл бұрын
Поучись у Борисова обьяснять.
@alexeystaroverov4804
@alexeystaroverov4804 4 жыл бұрын
Попробуем использовать аннотацию SpringBootTest. А пишет SpringBootApplication. Сидишь и думаешь слушать дальше или нет
Spring по верхам: Тестирование REST-сервиса
44:32
Уголок сельского джависта
Рет қаралды 12 М.
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,7 МЛН
Homemade Professional Spy Trick To Unlock A Phone 🔍
00:55
Crafty Champions
Рет қаралды 58 МЛН
Java Unit Testing with JUnit - Tutorial - How to Create And Use Unit Tests
21:35
Почему ты НЕ СТАНЕШЬ тестировщиком в 2024 году?
11:15
Горящий Тестер | Антон Дуенин
Рет қаралды 8 М.
Top 25 Microservice Interview Questions Answered - Java Brains
39:54
Евгений Борисов - Spring-построитель
2:24:30
JPoint, Joker и JUG ru
Рет қаралды 172 М.
Евгений Борисов - Spring Data? Да, та!
50:04
JPoint, Joker и JUG ru
Рет қаралды 102 М.
Евгений Борисов и Кирилл Толкачёв - Spring Reactive Ripper
1:01:47