A simplistic Android Twitter client demonstrating the use of the MVP pattern, unit tests with pure JUnit4 and Robolectric, UI testing using UI Automator and Espresso, usage of various libraries such as Dagger 2, RxJava, Retrofit, Twitter SDK, RecyclerView, Butter Knife, Picasso, Joda-Time, etc
- Log in with Twitter
- View last 20 tweets on home timeline
- Pull to refresh
- Post tweet
The project uses the MVP pattern for clear separation of concerns and to maximise testability
Simple model classes to represent the relevant information for the app
The only presenter for now is the TimelinePresenter, responsible to manage data loading/saving, update the view and handle user interaction events
TwitterService handles communication with the Twitter API
Here the callback interfaces have been converted to RxJava Observables and the Twitter SDK objects converted to our models
All UI related classes live here
-
Activities
-
Adapters
TimelineConverter converts from cumbersome Tweets to our TimelineItem models
View interfaces implemented by Activities
The project demonstrates different testing techniques
-
Simple JUnit4 tests are used to test presenters - TimelinePresenterTest.java
-
Robolectric is used when Android framework classes are required - TimelineConverter.java
-
UI Automator is used when UI tests need to interact with activities outside the app - LoginActivityTest
-
Espresso is used when only interacting with activities of the app - TimelineActivityTest
Not in any particular order
- Dagger 2
- RxJava
- RxAndroid
- Retrolambda
- Project Lombok
- Retrofit
- OKHttp
- Butter Knife
- Picasso
- Joda-Time
- JUnit
- Mockito
- Hamcrest
- Robolectric
- Espresso
- UI Automator
Special thanks to Twitter for Fabric