Flutter Unit Testing Tutorial For Beginners - Practical Guide

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 มี.ค. 2023
  • 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

ความคิดเห็น • 153

  • @pamboabubakar6052
    @pamboabubakar6052 ปีที่แล้ว +29

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

  • @kahanx10
    @kahanx10 10 หลายเดือนก่อน +1

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

  • @moisesgomez7820
    @moisesgomez7820 9 หลายเดือนก่อน +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 7 หลายเดือนก่อน +4

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

  • @cromuelbarut9859
    @cromuelbarut9859 10 หลายเดือนก่อน +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 👍

    • @RivaanRanawat
      @RivaanRanawat  10 หลายเดือนก่อน

      Thanks! Glad it was helpful

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

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

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

      Thanks Saksham, glad it helped you!

  • @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!

  • @prathapkrissh350
    @prathapkrissh350 2 หลายเดือนก่อน

    Thanks man. Your content delivery is very clear 🎉

  • @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 !

  • @coderb8762
    @coderb8762 2 หลายเดือนก่อน +1

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

    • @RivaanRanawat
      @RivaanRanawat  2 หลายเดือนก่อน

      Glad it was helpful!

  • @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.

  • @kalphupadhyay2802
    @kalphupadhyay2802 10 หลายเดือนก่อน

    Thank you so much for such an informative video.

  • @EasyEnglishMovie
    @EasyEnglishMovie 11 หลายเดือนก่อน

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

  • @safeerhussain7371
    @safeerhussain7371 7 หลายเดือนก่อน

    You have a passion of prgramming ...

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

    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?

  • @Xyedrehan
    @Xyedrehan 7 หลายเดือนก่อน

    Damn, found the right testing video-amazing!

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

    Great tutorial, Keep up the good work 👍

  • @francisndubanumbi648
    @francisndubanumbi648 6 หลายเดือนก่อน

    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:)

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

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

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

      Glad it was helpful!

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

    This is so much good, Appreciations

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

    Really helpful for unit testing ❤🎉

  • @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?

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

    Amazing explanation!

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

    Thank you so much rivaan

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

    Best flutter channel to help us become a professional flutter developers

  • @nanjiboyy7007
    @nanjiboyy7007 7 หลายเดือนก่อน

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

  • @yaheashamas8358
    @yaheashamas8358 7 หลายเดือนก่อน

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

  • @aminarshadinia215
    @aminarshadinia215 2 หลายเดือนก่อน

    great content!

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

    Thank you so much ❤
    Great Tutorial ❤

  • @anandpatel3580
    @anandpatel3580 3 หลายเดือนก่อน

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

  • @user-dm3ow6po9l
    @user-dm3ow6po9l 5 หลายเดือนก่อน

    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  5 หลายเดือนก่อน +1

      Wow, thank you Ismile, appreciate it!

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

    Masterpiece bro. Love from pakistan

  • @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

  • @thealmamun
    @thealmamun 25 วันที่ผ่านมา

    Just super 🤗

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

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

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

    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😎😎😎

  • @commercekv8422
    @commercekv8422 7 หลายเดือนก่อน

    awesome video

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

    Nice explanation ❤️

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

    Awesome!!!

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

    I hope your exam went well, anyways amazing video

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

    Great content

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

    Niceeeeee , love from India

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

    Great video

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

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

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

      Thanks Prashant, appreciate it:)

    • @OOO-CM-Ramesh
      @OOO-CM-Ramesh ปีที่แล้ว

      ​@@RivaanRanawat you are 17?

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

      Am 15 :)
      You can check my channel as well...hope you like it...

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

      @@RivaanRanawat damn you just 17?!!!!
      youre rocking it!

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

      Turned 18 😅

  • @apurbanath4822
    @apurbanath4822 9 หลายเดือนก่อน +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.

  • @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)'.

  • @Sebastian-zs8cp
    @Sebastian-zs8cp 5 หลายเดือนก่อน

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

  • @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!!

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

    great

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

    thank u

  • @user-ip5vj7fo2z
    @user-ip5vj7fo2z ปีที่แล้ว

    can i pass context to the function inside test

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

    Good Subject bro )

  • @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 ?

  • @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

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

    Osm teaching

  • @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

  • @statussSara
    @statussSara 3 หลายเดือนก่อน

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

  • @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

  • @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

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

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

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

      Will include it in the Bloc State Management tutorial!

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

      Okay 😄😄

  • @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

  • @amansingh.h716
    @amansingh.h716 ปีที่แล้ว

    good video

  • @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

  • @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.

  • @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!

  • @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

  • @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

  • @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!

  • @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!

  • @fimaljo7890
    @fimaljo7890 6 หลายเดือนก่อน

    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 5 หลายเดือนก่อน

      same here, any solutions?

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

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

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

    really a "practical" guide

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

    Please Learn AR

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

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

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

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

  • @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!

  • @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!

  • @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?

  • @user-zm4om6pg5y
    @user-zm4om6pg5y 5 หลายเดือนก่อน

    super simple explanation sir thanks for it

  • @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

  • @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.