Android TDD Masterclass Coroutines Jetpack

Master Android app development (Kotlin) with Clean Architecture, Test driven development, HILT, Espresso & Unit Testing
Android TDD Masterclass Coroutines Jetpack
File Size :
3.03 GB
Total length :
8h 54m



Petros Efthymiou


Last update




Android TDD Masterclass Coroutines Jetpack

What you’ll learn

Develop a state of the art Android 11 application: Kotlin, Coroutines, DI with Hilt, Jetpack Navigation Component, Kotlin Flow, MVVM
Develop an application purely with Outside-In Test Driven Development. We focus on producing a real production app with business logic and common UX patterns
Become a senior / architect Android engineer and advance in your career
How to combine all the practises together instead of having to follow multiple articles and courses and spending weeks to combine the best practises together
Jump straight to the latest and greatest of Android Development

Android TDD Masterclass Coroutines Jetpack


Basic Coding Knowledge
Basic Kotlin Knowledge or Good knowledge of another OO language


The TDD Masterclass by Petros Efthymiou.Learn State of the Art Android development by building  a real production app.Are you following dozens of forums, articles and buying courses in order to move your development skills and career to your next level? I am too, but more often than not, after completing them I realise that there is still a HUGE amount of work left to be done, to connect all the pieces together and make them work on a real application. I found that even though a course was providing comprehensive knowledge on coroutines it didn’t mean that I knew how to integrate them with Retrofit, Live data or Hilt. And because another course was extensive on Test Driven Development after completing it I didn’t know how to write an application with TDD using the latest Android tech stack. After buying courses, reading articles & forums and a couple of months of hands-on practise I have finally learned how to combine Android 11 best development practises in an Android application.I created this course to make the process easier for you! You are going to learn how to combineKotlinCoroutinesLive DataKotlin FlowRetrofitHiltJetpack NavigationMVVMAnd complete a real Android application purely on Outside-In Test Driven DevelopmentYou are going to learn how to write not flaky espresso tests in a real scenario with delays and HTTP calls, without using Thread.sleep(). After all we wouldn’t be doing TDD without efficient & effective Espresso UI tests!Why Me?Even though I am new to Udemy I am not new to the industry. I have been working as an Android engineer from junior to lead positions in ambitious startups & large multinational companies for about 8 years. Being a good engineer though doesn’t automatically mean that you are a good Instructor as well. In the past 5 years I have also discovered my passion for education and worked as a Software Instructor in several colleges and companies, including New York College, Hellenic American Union and my current position now is a Mobile Trainer in a Multinational company called Backbase, where I am trainingThe internal RnD engineersThe internal professional services engineersExternal third party integratorsIn my lifetime I have trained thousands of developers both in classroom, web conferences and video courses.Why is it important?As we are advancing to more senior engineering levels we realise that how we do things is equally important to getting them done. The industry has started to realise that a serious Software Engineering company cannot anymore base the products in purely architectures and engineering practises.I often say that there are 3 stages in the advancement of an engineerIn the first stage he/she is a programmer. He is learning how to make things work e.g. how to add buttons in an Android application and handle it’s click. But is not aware of the importance of doing things well. He or she cannot realise that a purely structured system is certain to backfire in the long run and while everything initially seemed to be going well, “suddenly” it is impossible to work with this system anymore. New features are hard to be added, and bugs very often slip to production codeIn the second stage having realised the past mistakes the professional starts practising and learning good engineering patterns. He or she starts exploring things like :SOLID PrinciplesDesign patternsClean architectureSeparation of concernsLow coupling, High cohesionUnit Testingand if is passionate and dedicated enough manages to reach a more senior level and is able to develop systems that can be successful not only in the short but also in the long runThe final stage is the Mastery. This stage is an ongoing process and doesn’t ever end. After the engineer has a good understanding of the above practises he realises there is a huge room of improvement. He learns how to apply them and most importantly when they are not required and simpler-junior level approaches are more beneficial for the specific project/situation. In other words it is a constant effort to learn how to neverUnder-EngineerOr Over-Engineer.He or she also comes in touch with more advanced practises like Test Driven Development which takes quite a lot of effort to get a grasp and master it.In this course I will do my best to advance you in this path. I will offer to you what I have learned on my journey and I am also very open to learn from you. I am always available on the forums to support and discuss topics that you might have a different point of view and this way we can help each other on our endless road in Software Mastery.


Section 1: Introduction

Lecture 1 Course Introduction

Lecture 2 Course Explanation

Section 2: Test Driven Development Explained

Lecture 3 Section Intro

Lecture 4 What is TDD

Lecture 5 Advantages of TDD

Lecture 6 Platform Independent

Lecture 7 TDD Lifecycle

Lecture 8 What is a Test

Lecture 9 Writing Our First Unit Test

Lecture 10 Solution: Second Unit Test

Lecture 11 Rate the Course

Lecture 12 Test Preconditions

Lecture 13 Types Of Automated Tests

Lecture 14 Google Testing Pyramid

Lecture 15 Types of TDD

Lecture 16 Classicists VS Outside-In TDD

Lecture 17 And The Winner Is..

Lecture 18 Outside-in TDD Lifecycle

Lecture 19 Our first system using TDD – Requirements

Lecture 20 Failing Acceptance Test

Lecture 21 First TDD Cycle Completed

Lecture 22 Second Failing Acceptance Test

Lecture 23 Car Inner TDD cycle

Lecture 24 Engine Inner TDD cycle

Lecture 25 Green: Acceptance Test

Lecture 26 Section Closing

Section 3: Coroutines Made Simple

Lecture 27 Section Intro

Lecture 28 What Problems Do Coroutines Solve?

Lecture 29 Suspend & Resume

Lecture 30 Examining How Coroutines Work

Lecture 31 Main Safety With Coroutines

Lecture 32 Structured Concurrency

Lecture 33 Coroutines Practical Example

Lecture 34 Testing Coroutines

Lecture 35 Kotlin Flow

Lecture 36 Advantages of Kotlin Flow

Lecture 37 Kotlin Flow in Practise

Lecture 38 Unit Testing Kotlin Flow

Lecture 39 Closing The Implementation

Section 4: Developing an Android app with TDD

Lecture 40 Section Introduction

Lecture 41 Working Agile

Lecture 42 Application Requirements

Lecture 43 Setting up our Backend

Lecture 44 Setting up our Android Application

Lecture 45 First Acceptance Test Passing

Lecture 46 Playlists failing acceptance test

Lecture 47 Minimum Viable Architecture

Lecture 48 Starting with the UI

Lecture 49 Playlist Fragment Implementation

Lecture 50 Finishing up the View Layer

Lecture 51 Red: ViewModel Unit Test

Lecture 52 Green: First VM Unit test

Lecture 53 Green: VM Emitting Playlists

Lecture 54 Refactoring Phase

Lecture 55 Testing Error Cases

Lecture 56 Implementing The Repository Layer

Lecture 57 Repository Layer (Cont)

Lecture 58 Wrapping up the Repository

Lecture 59 Exercise: Service

Lecture 60 Green: First Service Test

Lecture 61 Green: Second Service Test

Lecture 62 Green: Third Service Test

Lecture 63 Wrapping up the Playlists Feature

Section 5: Refactoring with Dependency Injection

Lecture 64 Section Intro

Lecture 65 Dependency Injection Explained

Lecture 66 Pros of using DI

Lecture 67 Introduction to Google HILT

Lecture 68 Evaluating our situation

Lecture 69 Download HILT

Lecture 70 Integrating HILT

Lecture 71 Finishing HILT Integration

Lecture 72 Testing the Application

Lecture 73 Section Closing

Section 6: Adding Business Logic

Lecture 74 Section Intro

Lecture 75 Requirements Change

Lecture 76 Failing Acceptance Test

Lecture 77 Green: Acceptance Test

Lecture 78 Loader Hiding, Failing Acceptance Test

Lecture 79 Completed Loader Feature

Lecture 80 Rock Image, Failing Acceptance Test

Lecture 81 Upfront Design

Lecture 82 Red: Failing Repository Test

Lecture 83 Green: Repository Using Mapper Test

Lecture 84 Green: Whole Repository Suite

Lecture 85 Green: First Mapper Test

Lecture 86 Green: Playlist Mapper TDD cycle

Lecture 87 Green: Acceptance Test!

Lecture 88 Bonus: Removing Thread Sleep From Espresso Tests

Section 7: Jetpack Navigation

Lecture 89 Section Intro

Lecture 90 Introduction to Jetpack Navigation

Lecture 91 Pros Of Jetpack Navigation

Lecture 92 Upfront Design

Lecture 93 Failing Acceptance Test

Lecture 94 Adding The NavHost

Lecture 95 Creating The Navigation Graph

Lecture 96 Applying the Navigation

Section 8: Adding Second Screen

Lecture 97 Section Intro

Lecture 98 Upfront Design

Lecture 99 Exercise: Failing Acceptance Test

Lecture 100 Exercise: View Layer

Lecture 101 Solution: View Layer

Lecture 102 Solution: View Layer Completed

Lecture 103 Exercise: ViewModel TDD Cycle

Lecture 104 Solution: Data Delegation Green

Lecture 105 Exercise: Test Error Case

Lecture 106 Solution: ViewModel Completed

Lecture 107 Exercise: Playlist Details Service

Lecture 108 Green:Service_First_Test

Lecture 109 Green:Service_Second_Test

Lecture 110 Green: Completed_Service_Implementation

Lecture 111 Green:Acceptance_Test

Lecture 112 Final Improvements

Lecture 113 Green:Display Loader Acceptance Test

Lecture 114 Green: Loader Improvement

Lecture 115 Green: Showing Error Message

Lecture 116 Green: MVP!

Section 9: Closing

Lecture 117 Congratulations!

Lecture 118 Let’s stay in touch

Lecture 119 Become a Mobile Architect

Lecture 120 To Stay in Touch

Android Developers who want to advance in their career and learn how to structure clean state of art Android 11 applications,Backend/Front-end/iOS developers who want to jump straight to the latest and greatest of Android development and learn how to do it right,Developers who want to learn how to develop a system purely with Test Driven Development

Course Information:

Udemy | English | 8h 54m | 3.03 GB
Created by: Petros Efthymiou

You Can See More Courses in the IT & Software >> Greetings from

New Courses

Scroll to Top