Open eurosecom opened 7 years ago
best approach to create dagger2 component is create classic components without dependent component and subcomponent . It's easy to override classic component in MockApplication.java and ActivityTest.java without change app code only in testcode.
is better provide dependencies in Module.java instead of base injection in class constructors because of easy override provided dependency in androidTestActivity
ApplicationModule.java included to ClockModule.java
`@Module(includes = {ApplicationModule.class} ) public class ClockModule {
@Provides @Singleton Clock provideClock() { return new Clock(); }
@Provides @Singleton SharedPreferences providesSharedPreferences(Application application) { return PreferenceManager.getDefaultSharedPreferences(application); }
}`
ADD Lambda Expression Support
add to project/build.gradle
dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'me.tatarka:gradle-retrolambda:3.5.0' }
add to app/build.gradle
`apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda'
android { compileSdkVersion 23 buildToolsVersion '25.0.2'
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } `
Add Realm
`dependencies {
// Realm compile 'io.realm:realm-android:0.82.1'`
Add RxJava and RxAndroid
`dependencies {
//rxjava compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex:rxandroid:1.2.0' `
packagingOptions { //duplicate files copied in apk meta-inf/rxjava exclude 'META-INF/rxjava.properties' }
By http://blog.sqisland.com/2015/04/dagger-2-espresso-2-mockito.html Github code https://github.com/chiuki/android-test-demo Override dagger Module by androidTesting. Demo App in folder android-test-demo-master
override TestRunner in app/build.gradle
defaultConfig { applicationId 'com.sqisland.android.test_demo' minSdkVersion 8 targetSdkVersion 23 versionCode 1 versionName '1.0.0'
testInstrumentationRunner 'com.sqisland.android.test_demo.MockTestRunner' } In MockTestRunner we call MockDemoApplication.java
app/buld.gradle dependency androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:2.11" for build components and modules in TestActivity for DaggerMainActivityTest_TestComponent.builder().build(); in MockDemoApplication.java
edit Configuration MainActivityTest.java to change TestRunner to MockTestRunner