Example project that shows how to create Tidal search functionality using the Deezer API
This project brings to the table set of best practices, tools, and solutions:
- 100% Kotlin
- Modern architecture (Clean Architecture, Multi-Module setup, Model-View-ViewModel, Single-Activity)
- Android Jetpack
- Dependency Injection
- Kotlin - First class and official programming language for Android development.
- Coroutines - Kotlin's way of way of writing asynchronous, non-blocking code
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps
- LiveData - Data objects that notify views when the underlying data changes
- ViewModel - Stores UI-related data that isn't destroyed on UI changes
- DataBinding - Allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically
- Hilt - Dependency Injection library for Android that reduces the boilerplate of doing manual dependency injection in your project
- Retrofit - A type-safe HTTP client for Android and Java
- Moshi - A modern JSON library for Kotlin and Java.
- JUnit 4 - Simple framework to write repeatable tests
- mockito - Most popular Mocking framework for unit tests
- mockito-kotlin - Provides helper functions to work with Mockito in Kotlin
- Truth - Makes your test assertions and failure messages more readable
- Robolectric - Runs tests in a simulated Android environment inside a JVM without the overhead of an emulator
- Fragment Test - Helps you run Fragment tests without dependencies on a specific parent activity or fragment
- Espresso Core - Helps you write concise, beautiful, and reliable Android UI tests.
To run tests use: ./gradlew testDebugUnitTest
Copyright 2021 Vladimir Jovanović
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.