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

Testing Flows with Turbine

In this section, we will learn how to test Flows using Turbine, which is a third-party library that we can use to test flows in our project.

Hot flows such as SharedFlow and StateFlow, as you learned in the previous chapter, emit values even if there are no listeners. They also keep emitting values and do not complete. Testing them is a bit more complicated. You won’t be able to convert these flows to a list and then compare it to the expected values.

To test hot flows and make testing other Flows easier, you can use a library from Cash App called Turbine (https://github.com/cashapp/turbine). Turbine is a small testing library for Kotlin Flow that you can use in Android.

You can use the Turbine testing library in your Android project by adding the following to your app/build.gradle dependencies:

dependencies {
    …
    testImplementation 'app.cash.turbine:turbine:0.8.0'
...