ТЕСТИРОВАНИЕ НА JAVA (JUNIT, MOCKITO)

Sdílet
Vložit
  • čas přidán 23. 08. 2024
  • Привет. За 9 минут вы узнаете, как писать unit тесты с помощью библиотек junit и mockito.
    Код из видео:
    github.com/dis...

Komentáře • 74

  • @moscowkremlingovernment
    @moscowkremlingovernment Před rokem +31

    Бро, нереальный респект и огромное человеческое спасибо! Надеюсь ты будешь развивать эту тему, по тестированию на Java в русскоязычном сегменте очень мало видосов

  • @sergeysirmays6010
    @sergeysirmays6010 Před 6 měsíci +7

    Самый короткий и понятный мануал! Я до этого часа 4 просмотрел всего и не мог до конца понять. Спасибо!

  • @user-qf9um5qb9d
    @user-qf9um5qb9d Před rokem +14

    Кратко, емко, отличная подача материала.
    Дикция, голос - супер.
    Классные уроки.
    С нетерпение жду новых видео!

  • @Dmitriy95
    @Dmitriy95 Před rokem +4

    перерыл кучу сайтов в поисках объяснения JUnit, везде куча воды и непонятных встулений. Тут все четко, кратко и по делу, спасибо чувак, пойду к тебе на канал, уверен там куча видео в таком стиле)

  • @dmitrelkin9256
    @dmitrelkin9256 Před rokem +5

    Спасибо! очень в тему! Хорошее изложение, без воды, то что нужно!
    Очень хочется продолжения с тестированием REST`а с MockMvc и RestAssuredMockMvc и тестированием REST`а с поднятым секьюрити ))

  • @user-qi8jz7rh6f
    @user-qi8jz7rh6f Před rokem +4

    Отличное видео. Для меня, новичка в тестах теперь понятно хотя бы как начать писать простые контроллер тесты, а там уж с практикой можно разобраться с остальным.

  • @user-ow5ey6tp5u
    @user-ow5ey6tp5u Před rokem +3

    Молодец. Емко, коротко. И про нейминг тест класов не забыл!!! Многие это упускают.

  • @user-lh9vc1kb6q
    @user-lh9vc1kb6q Před 5 měsíci +2

    Огромная вам благодарность за то что так доходчиво обьясняете!

  • @user-rc3wf6ro2x
    @user-rc3wf6ro2x Před rokem +2

    Единственное видео, после которого действительное пришло понимание основ тестирования на Java. Спасибо!

  • @alexandr6055
    @alexandr6055 Před 11 měsíci +3

    Офигенный блогер. Одна претензия есть - почему так часто пропадаешь? Реально пили больше видео, может лайфкоддинг? Реально крутая подача, сжато и информативно

    • @javistt
      @javistt  Před 11 měsíci +1

      Благодарю. Пропадаю, потому что на производство видео уходит много времени и не всегда получается его выделить.

  • @timgapps9878
    @timgapps9878 Před 11 měsíci +2

    Очень хорошо объясняешь, спасибо за хороший и понятный урок. Продолжай пожалуйста выпускать видео по программированию на Java. Успехов тебе!

  • @alalon8045
    @alalon8045 Před rokem +2

    Подача замечательная, благодарю! Вы лучший! Буду смотреть ваши уроки, спасибо большое!!!

  • @mitruslatovous6
    @mitruslatovous6 Před rokem +2

    Понятное изложение. Спасибо за рассказ! Ждем продолжения )

  • @AP-jq2lv
    @AP-jq2lv Před 2 měsíci

    спасибо, отличное видео. Без воды, на адекватных, понятных любому, примерах 🤘🏻

  • @user-nj5sc4ht8f
    @user-nj5sc4ht8f Před 9 měsíci +1

    НЕВЕРОЯТНО понятное объяснение, респект!!

  • @olegtotsamiy6588
    @olegtotsamiy6588 Před rokem +3

    Спасибо за видео! Ждём видео по тестированию репы)

  • @sorry4206
    @sorry4206 Před rokem +1

    Где же ты был раньше; это просто прекрасно

  • @user-iu6yz6ck6h
    @user-iu6yz6ck6h Před rokem +2

    С возвращением )) Спасибо за виде

  • @user-tc7es2iw6o
    @user-tc7es2iw6o Před rokem +2

    Прекрасное объяснение, человек явно понимает о чём говорит, спасибо

  • @Devivl
    @Devivl Před rokem +1

    Ух ты, вот это открытие. Джавист, в твоей команде подписчиков пополнение. Уверен, с такой подачей количество подписчиков будет не 3.78, а 378 тыс.

  • @raccoon8230
    @raccoon8230 Před rokem +1

    Огромное спасибо!
    Ждем продолжения по тестированию и @Transactional

  • @RomanKoshetov
    @RomanKoshetov Před měsícem

    Очень классные объяснения, красавчик мужик)

  • @user-gh8bw8pe4l
    @user-gh8bw8pe4l Před 10 měsíci

    Вот прям по круто обьяснил, без ненужных сравнений, БРАВООО!

  • @vint_razboltaylo
    @vint_razboltaylo Před rokem +1

    Ура, новый видос! Спасибо за видео!

  • @user-ko3vx6rh6t
    @user-ko3vx6rh6t Před rokem +1

    Круто! Давно ждал твои видео, сними пожалуйста что нибудь про spock framework

  • @selftishz3151
    @selftishz3151 Před 5 měsíci

    Отличная подача: речь - супер топ

  • @cssrestore5020
    @cssrestore5020 Před měsícem

    Божественное видео! Спасибо

  • @aleisder9788
    @aleisder9788 Před rokem +2

    Огромное спасибо, как всегда всё коротко, чётко, и по полочкам. Обожаю твои видео! Сними пожалуйста ролик по Spring Security

  • @user-vk2fv9ub8i
    @user-vk2fv9ub8i Před 10 měsíci

    Емко и по делу и главное прям то, что я искал)

  • @ivanstrelka3448
    @ivanstrelka3448 Před rokem +1

    оч круто!! ждем еще спасибо

  • @AlpineDevCode
    @AlpineDevCode Před 5 měsíci

    Очень классная подача материала, спасибо!

  • @asadbekquronboyev128
    @asadbekquronboyev128 Před rokem

    Спасибо за урок)), жду следуещий, на контроллера и репозитории!

  • @intersteler8767
    @intersteler8767 Před rokem +1

    спасибо за видео! жду видео про тестирование репозиториев и контроллеров

  • @JanSobolewski1987
    @JanSobolewski1987 Před 7 měsíci

    Коротко и ясно рассказал. Like

  • @maniak63
    @maniak63 Před 9 měsíci

    отличный материал, спасибо!)

  • @bl_dorama
    @bl_dorama Před 9 měsíci

    Очень жду видео, тестирование Controller и Repository)

  • @kirilldolgopolov3695
    @kirilldolgopolov3695 Před 7 měsíci

    Отоичное видео, спасибо!

  • @obusis
    @obusis Před 8 měsíci

    Спасибо большое! Очень ясно и доходчиво! Подписался

  • @user-cf2jo7vo8p
    @user-cf2jo7vo8p Před rokem +1

    Хороший видос, спасибо😊

  • @user-dz7oq1ex5d
    @user-dz7oq1ex5d Před rokem +1

    Снимай пожалуйста больше!!!!

  • @gingerCatStore
    @gingerCatStore Před 10 měsíci

    подписка однозначно!

  • @mustFLEXboi
    @mustFLEXboi Před 10 měsíci

    Это видео спасло мой дедлайн

  • @nik_volev
    @nik_volev Před 28 dny

    Спасибо большое за такое понятное объяснение! Насколько я понял, создание класса для исключения TooLowSalaryException было опущено для краткости?

    • @nik_volev
      @nik_volev Před 27 dny

      Всё, увидел в исходном коде)

  • @user-wq7ky1rn2j
    @user-wq7ky1rn2j Před rokem

    Лучший!

  • @m0naco608
    @m0naco608 Před 3 dny

    Стоит ли каждый метод сервиса тестировать в отдельном классе или это излишество ? Просто хотелось бы структурировать тесты, типа каждый метод тестируется отдельно, а не в куче со всеми... Или так нельзя делать ?

    • @javistt
      @javistt  Před 3 dny

      @@m0naco608 Начать можно с тест класса для всего класса, а не отдельного метода.

  • @hybi666
    @hybi666 Před 8 měsíci

    Спасибо

  • @whitelight8811
    @whitelight8811 Před rokem

    Приятный голос

  • @user-007-1
    @user-007-1 Před rokem

    Давай про тестконтейнеры)

  • @kirilluroven8491
    @kirilluroven8491 Před rokem

    Привет!
    спасибо за видео, полезно
    У меня вопрос, буду благодарен, если получу ответ
    Если например в сервисом слое используется маппер, типо мэпстракт, и нужно протестить сервис, нужно мотать и менять поведение этого маппера, или не макать его и добавить "оригинальный объект"

    • @javistt
      @javistt  Před rokem +1

      Привет, если логика маппинга не сложна и не включает вызовы к другим сервисам или ресурсам, то мокать её не нужно. Мапперы обычно не имеют сторонних зависимостей, и их можно использовать напрямую в тестах. Тем более что маппинг - это часть логики, которую тоже нужно проверять.

    • @kirilluroven8491
      @kirilluroven8491 Před rokem

      @@javistt супер, спасибо

  • @dmitriyaverianov1843
    @dmitriyaverianov1843 Před 6 měsíci

    ещё больше белого, чтобы сломать глаза

  • @EdwardNorthwind
    @EdwardNorthwind Před 5 měsíci

    Классно, что не остановился на калькуляторе. Хотя стоило больше внимания уделить, а зачем тестировать вроде бы очевидные и простые методы... А то именно по этой причине я и забиваю на тесты. Ну тут же всё очевидно, так зачем тратить на это время 🤬Тяжело избавится от этой привычки пока не начнешь работать в команде.

    • @EdwardNorthwind
      @EdwardNorthwind Před 5 měsíci

      После нашел следующие ролики про тестирование. Так что претензия снята. Так что, народ, если видели лишь данное видео, обязательно посмотрите и другие.

  • @FFl1s
    @FFl1s Před 9 měsíci

    Спсшки!!!

  • @baimuhtar8186
    @baimuhtar8186 Před 7 měsíci

    Здравствуйте, подскажите как сейчас проводят автотест на Java c Selenium для входа в аккаунт Google?

    • @javistt
      @javistt  Před 7 měsíci

      Приветствую.
      chat.openai.com/share/24f890c2-dd12-4862-9a49-35cb0e6c2114

    • @baimuhtar8186
      @baimuhtar8186 Před 7 měsíci

      @@javistt Но выходит ведь окно, что «этот браузер или приложение небезопасны». И дальше не получается пройти авторизацию.

  • @wladimir1366
    @wladimir1366 Před 8 měsíci

    Почему так мало лайков. Посчитайте мой за 5, пожалуйста

  • @themukha
    @themukha Před 3 měsíci

    Я уже больше 3 лет занимаюсь автоматизацией тестирования бэкенда и только узнал о методе asserThrows🤣
    Мдэ, позор мне

  • @ruCK1E_xue5051
    @ruCK1E_xue5051 Před 11 měsíci

    А другой раз когда настанет?

    • @javistt
      @javistt  Před 11 měsíci

      Хороший вопрос

  • @romabulava899
    @romabulava899 Před 7 měsíci

    на 0,75 скорости голос такой гы

  • @MrNaumenco
    @MrNaumenco Před rokem

    Только у меня с 5 мин видео замыливается?

    • @javistt
      @javistt  Před rokem

      Проверил, вроде всё в порядке.

  • @John.Constantine.777
    @John.Constantine.777 Před 5 měsíci

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

  • @sovietunionmissionary
    @sovietunionmissionary Před 4 měsíci

    Главное не объявлять внутри сервиса финальным то, что будем потом внедрять туда как мок. По крайней мере у меня так, не работала аннотация InjectMocks пока не убрал final.

  • @wilsonikner1167
    @wilsonikner1167 Před měsícem

    Я один, наверное, тут тупой) У меня не получается тестировать без предварительной сборки проекта. Если же я предварительно его собираю, то есть появляется папка target, то тестирует , НО, при изменении класса Calculator необходимо снова пересобрать проект. Я так понимаю, у меня тестируется класс в папке target, почему? вроде бы сделал как на видео. Я меня нет Application класса только, но автор ничего о нем не говорит. я конечно могу открыть свои СпрингБутовские проекты, и там сделать , но мне интересно как тестировать в разных случаях, с разными фреймворками и конфигурациями. Итак, при запуске тестирования метода sum()
    Internal Error occurred.
    org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:160)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverSafely(EngineDiscoveryOrchestrator.java:132)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:107)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:78)
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:99)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85)
    at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
    at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:63)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
    Caused by: org.junit.platform.commons.JUnitException: ClassSelector [className = 'com.Testing.utils.CalculatorTest', classLoader = null] resolution failed
    at org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener.selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:39)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:103)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:83)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:113)
    at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:46)
    at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:152)
    ... 13 more
    Caused by: org.junit.platform.commons.PreconditionViolationException: Could not load class with name: com.Testing.utils.CalculatorTest
    at org.junit.platform.engine.discovery.ClassSelector.lambda$getJavaClass$0(ClassSelector.java:95)
    at org.junit.platform.commons.function.Try$Failure.getOrThrow(Try.java:335)
    at org.junit.platform.engine.discovery.ClassSelector.getJavaClass(ClassSelector.java:94)
    at org.junit.jupiter.engine.discovery.ClassSelectorResolver.resolve(ClassSelectorResolver.java:66)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.lambda$resolve$2(EngineDiscoveryRequestResolution.java:135)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1685)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:189)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:126)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:92)
    ... 18 more
    Caused by: java.lang.ClassNotFoundException: com.Testing.utils.CalculatorTest
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:534)
    at java.base/java.lang.Class.forName(Class.java:513)
    at org.junit.platform.commons.util.ReflectionUtils.lambda$tryToLoadClass$9(ReflectionUtils.java:832)
    at org.junit.platform.commons.function.Try.lambda$call$0(Try.java:57)
    at org.junit.platform.commons.function.Try.of(Try.java:93)
    at org.junit.platform.commons.function.Try.call(Try.java:57)
    at org.junit.platform.commons.util.ReflectionUtils.tryToLoadClass(ReflectionUtils.java:795)
    at org.junit.platform.commons.util.ReflectionUtils.tryToLoadClass(ReflectionUtils.java:751)
    at org.junit.platform.engine.discovery.ClassSelector.getJavaClass(ClassSelector.java:92)
    ... 32 more
    Process finished with exit code -2

    • @wilsonikner1167
      @wilsonikner1167 Před měsícem

      Заработало. Честно говоря, не знаю, что именно вызывало это ошибку.поигрался с версиями java в настройках проекта и с maven archetype , все заработало. Что то было с плагинами в pom.xml, я так понимаю, не билдился проект при запуске тестирования, да и psvm() не билдился, билдился только через встроенные в Idea Maven плагины, и только после сборки "вручную" тестирование работало