Book Image

Simplifying Android Development with Coroutines and Flows

By : Jomar Tigcal
Book Image

Simplifying Android Development with Coroutines and Flows

By: Jomar Tigcal

Overview of this book

Coroutines and flows are the new recommended way for developers to carry out asynchronous programming in Android using simple, modern, and testable code. This book will teach you how coroutines and flows work and how to use them in building Android applications, along with helping you to develop modern Android applications with asynchronous programming using real data. The book begins by showing you how to create and handle Kotlin coroutines on Android. You’ll explore asynchronous programming in Kotlin, and understand how to test Kotlin coroutines. Next, you'll learn about Kotlin flows on Android, and have a closer look at using Kotlin flows by getting to grips with handling flow cancellations and exceptions and testing the flows. By the end of this book, you'll have the skills you need to build high-quality and maintainable Android applications using coroutines and flows.
Table of Contents (11 chapters)
1
Part 1 – Kotlin Coroutines on Android
6
Part 2 – Kotlin Flows on Android

Exercise 7.01 – Adding tests to Flows in an Android app

For this exercise, you will be continuing the movie app you worked on in Exercise 6.01 – Handling Flow exception in an Android app. This application displays the movies that are currently playing in movie theatres. You will be adding tests for the Kotlin Flows in the project by following these steps:

  1. Open in Android Studio the movie app you worked on in Exercise 6.01 – Handling Flow exception in an Android app.
  2. Go to the MovieViewModelTest class. Run the test class, and the fetchMovies() test function will fail. That is because we changed the implementation to use Flow in the previous chapter.
  3. Remove the content of the fetchMovies() test function and replace it with the following content:
    @Test
    fun fetchMovies() {
        val dispatcher = StandardTestDispatcher()
     
        val movies = listOf(Movie(title = "Movie"))
        val expectedMovies...