Flutter Unit Testing Tutorial For Beginners - Practical Guide

Поделиться
HTML-код
  • Опубликовано: 30 июл 2024
  • Learn how to unit test your Flutter Apps. In this video, you'll understand what Unit Test is, why it's good to Unit Test and what non testable code is. Then, we will Unit Test a Counter app to understand Unit Test Basics. Moving on, we will Unit Test a class that has external dependency like HTTP Plugin to understand Mocking, Stubbing and need to do them. We will also learn about Dependency Injection.
    Thinking of implementing Unit Tests & other tests in upcoming project videos, what do you think?
    💻 Source Code: github.com/RivaanRanawat/flut...
    📌 Discord Server: / discord
    More Resources:
    Unit Testing Firebase Apps - firebase.flutter.dev/docs/tes...
    Unit Testing Riverpod - riverpod.dev/docs/cookbooks/t...
    codewithandrea.com/articles/u...
    Unit Testing Bloc - pub.dev/packages/bloc_test
    Connect With Me Here:
    Instagram: / optimalcoding
    GitHub: github.com/rivaanranawat
    Linkedin: / rivaan-ranawat
    Facebook: / rivaan.ranawat
    Mail: namanrivaan@gmail.com
    Medium: / namanrivaan
    Twitter: / ranawatrivaan

Комментарии • 154

  • @pamboabubakar6052
    @pamboabubakar6052 Год назад +30

    I've struggled with this concept for a while. I'm currently 8 mins in and I'm loving it

  • @kahanx10
    @kahanx10 11 месяцев назад +1

    Thanks Rivaan, you're doing a great job for the community!

  • @moisesgomez7820
    @moisesgomez7820 10 месяцев назад +3

    This is my first video created from this channel, and it's awesome. It's not easy to find this quality in Internet. New subscriber here! Thanks a lot.

  • @davidjohnkottarathil2342
    @davidjohnkottarathil2342 8 месяцев назад +4

    The best you find on internet, Thank you a lot for your effort and dedication to make it simple and understandable for everyone

  • @SakshamKarnawat
    @SakshamKarnawat Год назад +2

    Great explanation as always, Rivaan! Thank you so much. I admire your knowledge.

  • @cromuelbarut9859
    @cromuelbarut9859 11 месяцев назад +3

    this is the best flutter unit testing tutorial you can find in youtube, I like the way he teach the not so good practice at first then slowly improving it to best practices 👍

  • @thelolladorfking2416
    @thelolladorfking2416 Год назад +7

    I was a flutter developer once in a startup. Hope I discovered you before. You are an excellent teacher of wide range of knowledge. Thank you. Hope you keep making such incredible videos Rivaan !

  • @prathapkrissh350
    @prathapkrissh350 3 месяца назад

    Thanks man. Your content delivery is very clear 🎉

  • @topdeveloper8955
    @topdeveloper8955 22 дня назад

    You are a good teacher, easy to understand. keep it man

  • @hardiklakhalani6268
    @hardiklakhalani6268 Год назад +2

    Man, YOU ARE AN AMAZING INSTRUCTOR! Please keep making these lessons! I finally found the right testing 101 video.

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      I'm glad you were able to understand this Hardik!

  • @EasyEnglishMovie
    @EasyEnglishMovie Год назад

    Thank you very much, you always give us from your heart..

  • @kevinkone
    @kevinkone Год назад +3

    Thank you very much Mr. Rivaan, for sharing your knowledge and may God give you strength and health to continue your mission.

  • @coderb8762
    @coderb8762 3 месяца назад +1

    One of the best and easy to understand course i have ever seen . Thank you so much

  • @kalphupadhyay2802
    @kalphupadhyay2802 11 месяцев назад

    Thank you so much for such an informative video.

  • @mohammedaziz8635
    @mohammedaziz8635 Год назад

    Great tutorial, Keep up the good work 👍

  • @francisndubanumbi648
    @francisndubanumbi648 7 месяцев назад

    Thank you man. it is clear now

  • @josepholukayode8991
    @josepholukayode8991 Год назад +1

    Very rich tutorial on testing. Great job definitely sharing the video 😊.
    It opened my mind to more concepts writing unit tests

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Awesome Joseph! Let me know how it goes:)

  • @Xyedrehan
    @Xyedrehan 8 месяцев назад

    Damn, found the right testing video-amazing!

  • @omarfahim4177
    @omarfahim4177 Год назад

    This is so much good, Appreciations

  • @yusufumar6738
    @yusufumar6738 Год назад +3

    Thanks man, your video always comes at the right time. 👏👏👏

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Happy it helps!

    • @yusufumar6738
      @yusufumar6738 Год назад

      hi@@RivaanRanawat, please i have question, let say im using Dio instead of http, how is mock initialised look like? thanks

    • @yusufumar6738
      @yusufumar6738 Год назад

      for example in http we use this line of code "class MockHTTPClient extends Mock implements Client {}"
      how about that of dio?

  • @safeerhussain7371
    @safeerhussain7371 8 месяцев назад

    You have a passion of prgramming ...

  • @prashlovessamosa
    @prashlovessamosa Год назад +24

    I don't believe you're just 17, teacher.

  • @samamamajeed9893
    @samamamajeed9893 2 месяца назад

    I've been following you since 2022. And man, you have helped me improve my coding style, core concepts, logic building, productivity and more by a great margin. Keep going and doing stuff like this. I've major respect for you Rivaan and as a software engineer I highly appreciate your skills and maturity level. ♥️✨

    • @RivaanRanawat
      @RivaanRanawat  Месяц назад +1

      Great to hear, thanks so much!

    • @samamamajeed9893
      @samamamajeed9893 Месяц назад

      @@RivaanRanawat Are you planning to make a video about a video editor app using video editor sdk or creating a VPN app?

  • @yousour5112
    @yousour5112 2 месяца назад

    wow, this is what i need, awesome with explanation. thank.

  • @yaheashamas8358
    @yaheashamas8358 8 месяцев назад

    you are king you can make any thank hard to very easy thank you bro

  • @jivani6695
    @jivani6695 Год назад +2

    Really helpful for unit testing ❤🎉

  • @Sahilllll17
    @Sahilllll17 Год назад +1

    Thank you so much rivaan

  • @qazqwe5419
    @qazqwe5419 Год назад +1

    Amazing explanation!

  • @aminarshadinia215
    @aminarshadinia215 3 месяца назад

    great content!

  • @karthicj6929
    @karthicj6929 Год назад

    This was really helpful, I'm waiting for the widget and integration testing

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Widget Testing uploaded! Looking forward to uploading Integration Test in the next 3-4 days

  • @nanjiboyy7007
    @nanjiboyy7007 7 месяцев назад

    that apology popup was more distracting then the actual noise.
    BTW amazing explanation, Thanks.

  • @user-dm3ow6po9l
    @user-dm3ow6po9l 6 месяцев назад

    Myself Ismile, I literary don't comment in any videos but while watching half of it , i can say the way you explain is just incredible. the details you covered with basics are such a good outcomes for beginners. Thank You

    • @RivaanRanawat
      @RivaanRanawat  6 месяцев назад +1

      Wow, thank you Ismile, appreciate it!

  • @moazelsawaf2000
    @moazelsawaf2000 Год назад

    Thank you so much ❤
    Great Tutorial ❤

  • @mateenmehmood5675
    @mateenmehmood5675 Год назад +1

    Masterpiece bro. Love from pakistan

  • @muhammednashaf8136
    @muhammednashaf8136 Год назад

    Best flutter channel to help us become a professional flutter developers

  • @thealmamun
    @thealmamun Месяц назад

    Just super 🤗

  • @salmanrafi4253
    @salmanrafi4253 Год назад

    Love you bro ❤️ your content is the best in flutter❤️❤️

  • @commercekv8422
    @commercekv8422 8 месяцев назад

    awesome video

  • @kami_feeds
    @kami_feeds 2 месяца назад

    i really don't know why , i always feel like Rivaan has what i want ☺ , and it's actually true , thank you for great content Rivaan , am your student and big fan here😎😎😎

  • @hashankannangara8723
    @hashankannangara8723 Год назад

    Nice explanation ❤️

  • @jashwanthg3680
    @jashwanthg3680 Год назад +1

    m getting this error - The argument type 'Future Function(Invocation)' can't be assigned to the parameter type 'dynamic Function() Function(Invocation)'.

  • @anandpatel3580
    @anandpatel3580 4 месяца назад

    Found useful then Udemy paid course, Keep teaching we are watching your video.

  • @rr2r2r2ra
    @rr2r2r2ra Год назад

    Awesome!!!

  • @Sebastian-zs8cp
    @Sebastian-zs8cp 6 месяцев назад

    Instead of Arrange, Act, Assert. Can I use given, when, then or does this come from a different technology?

  • @olaokunade677
    @olaokunade677 Год назад

    Great content

  • @ananyasanwal6003
    @ananyasanwal6003 Год назад

    Niceeeeee , love from India

  • @pamboabubakar6052
    @pamboabubakar6052 Год назад

    Great video

  • @dipendraraghav1448
    @dipendraraghav1448 Год назад

    I hope your exam went well, anyways amazing video

  • @azamovdev
    @azamovdev Год назад

    Good Subject bro )

  • @thedaniel1235
    @thedaniel1235 Год назад +1

    Get Rivaan, great video. Would it be possible for you to create some riverpod testing videos?? I've been following your riverpod tutorials to create my apps and would love some testing content with riverpod. Thanks!!

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      I was going to include in this tutorial itself! But I've kept it for Riverpod State Management tutorial Part 2. It will include the following things:
      - StreamProvider with Riverpod Generator
      - Notifier & AsyncNotifier
      - Notifier & AsyncNotifier Generator
      - Riverpod Lints
      - Riverpod Testing
      .... and something else which I might have not noticed

    • @thedaniel1235
      @thedaniel1235 Год назад

      @@RivaanRanawat Awesome keep up the great work!!

  • @apurbanath4822
    @apurbanath4822 10 месяцев назад +1

    Nice video Rivaan, thanks. I can't get why the test passed after you removed the await keyword at 1:01:23. You said that if we await for the userRepository.getUser() function, it will actually throw an exception (and thus we need a try catch block), but isn't it what we want? Also, why does removing await work? Is it not throwing exception anymore? If it does, why don't we need a try catch block here? This part was not clear to me. Once again, thanks for this video.

  • @mohitsaini6642
    @mohitsaini6642 6 месяцев назад +1

    I have doubt 1:05:15 Doubt is when we are fetching data from server then why we are using .thenAnswer . IF we don't have any usage of no dependency what server is returning to us then why we are fetching we can also simple write the Response part and use that why we are doing this headache job ? when we are returning the same response every time. Also when backend developer change something the the response then our test _ code not know that we think it is okay and deploy the app to play store . Also let suppose if server is giving the error 404 or some other exception then think every time our code is okay ? how so in this case we also need to depend on the manual testing do you agree with it ?

  • @user-ip5vj7fo2z
    @user-ip5vj7fo2z Год назад

    can i pass context to the function inside test

  • @behzadayubifar8071
    @behzadayubifar8071 6 месяцев назад

    thank u

  • @marwanali3921
    @marwanali3921 2 месяца назад

    great

  • @statussSara
    @statussSara 4 месяца назад

    I say hello from Egypt 🎉.. please can you make testing(unit,widget,integration) for completed clean architecture flutter app

  • @parameshmamidisetti8167
    @parameshmamidisetti8167 Год назад

    Osm teaching

  • @onyemaanthony
    @onyemaanthony Год назад

    This great video, can you focus more on testing? because testing is very important even though we don't take them serious

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Sure Onyema. We've got Widget, Integration & TDD videos coming next.What more videos would you like to see on Testing?

    • @onyemaanthony
      @onyemaanthony Год назад

      @@RivaanRanawat great i'm looking forward to seeing, well as for me the above unit testing is okay, next is widget and integration testing with complex examples and project

  • @amansingh.h716
    @amansingh.h716 Год назад

    good video

  • @SwirX
    @SwirX 6 месяцев назад

    23:28 can't you just make a reset function in the counter that sets the count variable to 0 then add a test for the reset function after the increment test then test the decrement function so that you don't instance a new counter every test?
    Edit: nevermind u did that after

  • @deepmehta1540
    @deepmehta1540 Год назад +1

    can you please make a video on cubit unit testing using bloc_test package please?

  • @programingtales7514
    @programingtales7514 Год назад

    Thankyou verey much , what about mockito?

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Most Welcome! I think I forgot to put something about Mockito in there. However, it's almost the same thing as Mocktail except it's got code generation so you dont have to write big lines like `class MockClient extends Mock implement Client{}`. You can refer the documentation from here : pub.dev/packages/mockito

  • @vishaldrajpara5343
    @vishaldrajpara5343 Год назад

    Can you please make a video on how to create a terms and condition in for app

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      you can use App Privacy Policy Generator

  • @AnoopThiruonam
    @AnoopThiruonam Год назад

    Nice 👍 But I think the given-when-then is too long for descriptive statement. Since there are groups, the given can be removed from description

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Yep, anything that you find descriptive and feel might work well for you in the long run should be the description!

  • @omarjadiani1205
    @omarjadiani1205 Год назад

    thanks bro 🙌, just a notice the source code Github 's link is not working

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Yeah, I made the GitHub repository public.

  • @srkrishnan1989
    @srkrishnan1989 Год назад

    Explain about dart_frog on a project and how can be deployed

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Yes, I'll look into it. Have a Serverpod project in line. After that, can try looking into Dart Frog

  • @Aditya_Shahi
    @Aditya_Shahi Год назад +2

    FCM Notification complete guide please

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Have a few requested videos in line, I'll get to it super soon

  • @Guy_With_A_Plan
    @Guy_With_A_Plan Год назад

    Rivaan Please build an Airbnb full stack clone with flutter!🙏🙏

  • @tusharnegi6556
    @tusharnegi6556 Год назад

    Could you please make 1 video on MVVM design

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Yeah, I am going to use either MVVM Or Clean Architecture in the next project Tutorial. Will put out a poll for it

  • @RajnishKumar-ef7ls
    @RajnishKumar-ef7ls 3 месяца назад

    You haven't removed await from first test which have 200 status.

  • @lumiplex404
    @lumiplex404 Год назад

    Can I know, what editor you are using ?

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      It's VS Code only

    • @lumiplex404
      @lumiplex404 Год назад

      @@RivaanRanawat no no, i mean, video editor 😅 and also, can i get your insta or fb , so that I can communicate with you ?

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Oh alright 🤣
      I use Da Vinci Resolve.
      Instagram: optimalcoding

  • @fimaljo7890
    @fimaljo7890 7 месяцев назад

    while giving header or body to http. mock type 'Null' is not a subtype of type 'Future' this error coming. type 'Null' is not a subtype of type 'Future'
    test\webservice\login\feedback_request_test.dart 14:7 MockClient.post
    feedback_request_test.dart:14
    package:choys/src/webservice/feedback/feedback_request.dart 24:35 FeedbackRequest.createFeedback
    test\webservice\login\feedback_request_test.dart 81:51 main..

    • @UgurPasa1907
      @UgurPasa1907 6 месяцев назад

      same here, any solutions?

  • @vikashtiwari8360
    @vikashtiwari8360 Год назад

    please bring flutter and dart
    course for beginners

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Will come within 2 months. It's the next big course I'll be working on. Also, do you mind sharing your pain points while learning flutter. Like what do you find the most difficult in flutter. I'll emphasise on those aspects in the tutorial. Thanks!

  • @jivani6695
    @jivani6695 Год назад +1

    What about animation series? 😊

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      That will take some time Jivani. I plan to bring out Testing Series, Design Patterns, Flutter Beginner Course first.
      I am excited to bring many courses, hopefully I can reach till Animations really quick!

  • @uglypieceofcrap5428
    @uglypieceofcrap5428 Год назад

    really a "practical" guide

  • @azamovdev
    @azamovdev Год назад +1

    Please Learn AR

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      I've got some other tutorials in line, might take some time tbh

    • @azamovdev
      @azamovdev Год назад

      @@RivaanRanawat Of course I will wait. good luck with your work

  • @ananthegde2107
    @ananthegde2107 Год назад +5

    Bro Please bring a course on " DART & FLUTTER For BEGINNERS "

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      After the Testing Series & a few episodes on Design Patterns!

  • @Ali-rz6bn
    @Ali-rz6bn Год назад

    make game with flame package

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Sounds fun, I'll get to it after I get done with many tutorials I've in line!

  • @AnaPerez-bu6uu
    @AnaPerez-bu6uu Год назад +1

    Could you make a video about creating a OnlyFans clone with Flutter?

    • @RivaanRanawat
      @RivaanRanawat  Год назад

      Haven't used it, can you give a description of what that app is?

  • @ley5800
    @ley5800 Год назад +3

    i am bhopal county big fan zir pls give 40k rupees for mommy help ;(

    • @ananyasanwal6003
      @ananyasanwal6003 Год назад +1

      Hi you don’t want dollars ?

    • @ley5800
      @ley5800 Год назад +1

      @@ananyasanwal6003 no i want kuwait currecny

    • @ley5800
      @ley5800 Год назад

      @@ananyasanwal6003 PLEASE GIVE ONEY
      HEKELEOEOE

  • @user-zm4om6pg5y
    @user-zm4om6pg5y 5 месяцев назад

    super simple explanation sir thanks for it

  • @semihylmaz4936
    @semihylmaz4936 Год назад +1

    Hey Rivaan, when you decide to teach something. No matter how hard the concept is i know we will learn it so easy. I have some questions for you.
    1- Could you please continue the design pattern series ?
    2- Can you make video about folder Structures and architecture patterns like mvvm ?
    3- Can you give us advices about how to learn concepts better without needing helps from others too much ?
    (maybe some books, reading documents tips or some trick that you use while you learning)
    Thanks for you hard works.
    I hope we can help you too later on. 🫡

    • @RivaanRanawat
      @RivaanRanawat  Год назад +1

      Thanks for the kind words Semih!
      1. Design Patterns series is definitely going to be continued.
      2. I am planning to use either MVVM or Clean Architecture in the next project tutorial. I also have an Architecture Series in mind which covers things like MVC, MVVM, MVP, Clean architecture and so on. But it will only be out once I complete Design Patterns series.
      3. Just think what you wanna learn and search about it online. There's obviously Flutter docs which helps. If you don't understand, keep going through several blogs until you understand. There's ChatGPT too now. It's not always accurate but it can help you in simplification of things. Suppose you read a blog and dont understand a certain part. You can ask ChatGPT about the same. Most of the books in Flutter are written for beginners and dont help after a certain point. Main point is to not give up to learn the topic you want to learn.

    • @aypeace3090
      @aypeace3090 Год назад

      I've almost given up on how to load videos from api and then play it systematically/onClick like udemy for example.
      I literally cant find anything on the internet that helps.