http://tech.pristine.io/android-unit-test-idioms/ http://touk.pl/blog/pl/2014/02/26/mock-retrofit-using-dagger-and-mockito/ https://software.intel.com/en-us/videos/test-driven-development-and-android-testing-by-christopher-perry-and-marcelo-bay-area-android (http://uds.ak.o.brightcove.com/740838651001/740838651001_3482875046001_Android-Fest-Chris-and-Marcello-4-12-14.mp4) https://www.reddit.com/r/androiddev/comments/2mebor/testing_retrofit_observable_with_robolectric/ http://www.slideshare.net/godfreynolan/android-tdd-41783654 http://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android-- cms-23345 http://code.tutsplus.com/tutorials/quick-tip-using-butter-knife-to-inject-views-on-android--cms-23542 http://square.github.io/ (author of retrofit, dagger) http://developer.android.com/training/material/index.html http://www.androidhive.info/2015/04/android-getting-started-with-material-design/ http://joluet.github.io/blog/2014/07/07/rxjava-retrofit/ http://developer.android.com/tools/help/proguard.html http://engineering.circle.com/instrumentation-testing-with-dagger-mockito-and-espresso/ (https://github.com/bryanstern/dagger-instrumentation-example) https://www.youtube.com/watch?v=MXrHWpGuYdU (http://www.slideshare.net/krschultz419/building-maintainable-android-apps-droidcon-nyc-2014) http://antonioleiva.com/mvp-android/ http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html https://github.com/konmik/konmik.github.io/wiki/Introduction-to-Model-View-Presenter-on-Android https://kmangutov.wordpress.com/2015/03/28/android-mvp-consuming-restful-apis/ http://saulmm.github.io/when-Thor-and-Hulk-meet-dagger2-rxjava-1/ http://saulmm.github.io/when-Iron-Man-becomes-Reactive-Avengers2/ http://saulmm.github.io/2015/02/02/A%20useful%20stack%20on%20android%20%231,%20architecture/ http://saulmm.github.io/a-useful-stack-on-android-2-user-interface/ http://saulmm.github.io/a-useful-stack-on-android-3-compatibility/ http://fernandocejas.com/2015/07/18/architecting-android-the-evolution/ https://medium.com/@_rpiel/recyclerview-and-espresso-a-complicated-story-3f6f4179652e http://android.codeandmagic.org/testing-with-android-rxjava-and-mockito/
libraries:
- dagger / Dependency Injection (compile time! not runtime) / http://square.github.io/dagger/
- mockito / mocking / http://mockito.org/
- retrofit / REST client / http://square.github.io/retrofit/
- espresso / https://developer.android.com/training/testing/ui-testing/espresso-testing.html
- butterknife / Nice DI as replacement for findViewById / http://jakewharton.github.io/butterknife/
- calabash / acceptance tests aka cucumber (for iOS too)/ http://calaba.sh/ (ruby/cucumber)
- rxjava (with retrofit is solution for callback hell/boilerplate) http://joluet.github.io/blog/2014/07/07/rxjava-retrofit/
- proguard / obfuscation tool - becasue java could be easly decompiled by JAD (build in in Intellij/Android Studio) / http://developer.android.com/tools/help/proguard.html / because of that NO HARDCODING of SECRETS / PASSWORDS / LICENSES KEYS etc…
- android-lambda / support for lambdas (backported) / http://zserge.com/blog/android-lambda.html
http://xamarin.com/test-cloud test cloud (SaaS) with 1000 devices (great for combine it with calabash / acceptance tests)
Reactive Approach (RxJava)
http://www.node.mu/2014/07/02/using-retrofit-and-rxjava-to-interact-with-web-services-on-android/ vyshane/rex-weather: RexWeather - A sample Android project demonstrating the use of Retrofit and RxJava to interact with web services on GitHub http://blog.danlew.net/2014/10/08/grokking-rxjava-part-4/ https://speakerdeck.com/jakewharton/2014-1 https://prezi.com/ny0n-fnfdkgz/be-reactive-with-retrofit/ http://code.hootsuite.com/observing-observables-in-mobile-rxjava-for-android/ http://stablekernel.com/blog/replace-asynctask-asynctaskloader-rx-observable-rxjava-android-patterns/ https://kmangutov.wordpress.com/2015/03/28/android-mvp-consuming-restful-apis/ https://www.youtube.com/watch?v=JCLZ55M2gVo Android reactive programming with Rxjava https://www.youtube.com/watch?v=l63V5bZaS70 Lambdas on Android: RetroLambda, RxJava and Android Studio https://www.youtube.com/watch?v=2XHPaU-8z0A Introduction to RxJava, with code examples by Xavier Lepretre - SG Android Developers 05/2015 Part 1 https://www.youtube.com/watch?v=k3D0cWyNno4 Learning RxJava (for Android) by example
nice examples of tdd:
http://github.com:krschultz/AndroidWeatherBuoyDemo http://github.com:bryanstern/dagger-instrumentation-example