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

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 มี.ค. 2019
  • Ближайшая конференция - 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

  • @GeorgiyRyabov
    @GeorgiyRyabov 5 ปีที่แล้ว +9

    5/5 для QA, который не хочет читать спринговую документацию

  • @Boyarsskiy
    @Boyarsskiy 4 ปีที่แล้ว +23

    Жесть в такие тесты потом смотреть - заглядываешь, а там куча конфигов своих, что-то куда-то инжектится, откуда-то берётся. По идее тесты должны быть живой документацией к коду. Запутался в коде, глянул в тесты, запустил, подебажил и въехал. А тут отдельный мир со своим контекстом и конфигами.

    • @azamatk4302
      @azamatk4302 3 ปีที่แล้ว +10

      Spring сам по себе такой. В большинстве других фреймворках (на других языках) просто устанавливаешь библиотеку и юзаешь. А тут нужно конфиг файл запилить, содержимое которого только гуглежом можно получить, далее бины бины и бины, аннотации аннотации и аннотации.

    • @dgvgfg
      @dgvgfg 5 หลายเดือนก่อน

      далеко не всегда по тестам понимаешь что тест делает. Тем более обычно новичка (ну меня точно) поставили на испыталку писать тесты к 30 классам довольно сложным с Spark логикой к которой просто не было тестов. Да и тесты такая штука что можно написать 2+2 = 5 и всё будет проходить ещё так написать что никто не поймёт тесты это же ты сам ручками вводишь что ожидаешь.

  • @newlinebraces2872
    @newlinebraces2872 2 ปีที่แล้ว +2

    Когда Кирилл без Жени все так спокойно, потихоньку xD

  • @ashcs1
    @ashcs1 2 ปีที่แล้ว +1

    Господины критики, вам это не то и то не это. Ну сделайте лучше и выложите в общий доступ. Кирилл, спасибо за материал.

  • @alexgorodecky1661
    @alexgorodecky1661 8 หลายเดือนก่อน

    Вот бы час отлаживать обвязку к тестам 😆

  • @caffeinejavacode1475
    @caffeinejavacode1475 2 ปีที่แล้ว

    Зачем сужать скоуп SpringBootTest если тесты всего приложения будут в этом скоупе, а контекст только один для всех тестов

  • @zigzag2341
    @zigzag2341 3 ปีที่แล้ว +11

    Лучше бы показали как правильно тестировать на разных слоях, (как, куда и для чего писать юнит, интеграционные), а не вот это все, и кто вообще зависимости от классов делает ?

    • @caffeinejavacode1475
      @caffeinejavacode1475 2 ปีที่แล้ว

      есть ли видео которое обьясняеет то что вы написали?

    • @kotojava
      @kotojava ปีที่แล้ว

      дело в том что ответ кроется не в какой то специфике спринга или его тестирования. ответ кроется в пирамиде тестирования (и реалиях в которых пишется код, например если времени мало а хочется побольше покрытия то будут использоваться e2e тесты с максимально "настоящей" интеграцией). В остальных случаях нужно выбирать золотую середину между количеством тестов (а как следствие качеством покрытия) и затраченным временем (в тч временем на поддержку)

  • @caffeinejavacode1475
    @caffeinejavacode1475 2 ปีที่แล้ว +1

    @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) и можно без TestContainers в некоторых простых случаях

    • @kotojava
      @kotojava ปีที่แล้ว

      по моему это самый худший вариант. тут без гугления никак не разобраться. спринг и так вынуждает изучать его тонкости так теперь и на каждую автоконфигурацию нужно гуглить.

    • @ii99xt1
      @ii99xt1 ปีที่แล้ว +1

      Есть особенности синтаксиса SQL. И то что работает на проде (например Оракле) может не работать в H2

  • @kotojava
    @kotojava ปีที่แล้ว +1

    ребята поскажите пожалуйста если мы используем @SpringBootTest и в нем используем @TestConfiguration то если ли способ сказать спрингу чтобы бины из тестовой конфигуарции были всегда в приоритете над обычной конфигурацией? без эксплиситного указания @Primary?

  • @sromankov6102
    @sromankov6102 5 ปีที่แล้ว +1

    можно ссылку на этот код?

    • @lenorium8284
      @lenorium8284 5 ปีที่แล้ว +1

      github.com/lavcraft/spring-boot-curse

    • @alexeystaroverov4804
      @alexeystaroverov4804 5 ปีที่แล้ว +1

      Поучись у Борисова обьяснять.

    • @alexeystaroverov4804
      @alexeystaroverov4804 5 ปีที่แล้ว +5

      Попробуем использовать аннотацию SpringBootTest. А пишет SpringBootApplication. Сидишь и думаешь слушать дальше или нет