Skip to content

Commit 272a688

Browse files
authored
Merge pull request #225 from caarmen/migrate-dagger-to-hilt
Migrate dagger to hilt.
2 parents 32e988a + 3ff1ba1 commit 272a688

File tree

86 files changed

+946
-869
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+946
-869
lines changed

app/build.gradle.kts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
2222
plugins {
2323
alias(libs.plugins.android.application)
2424
alias(libs.plugins.benmanes)
25+
alias(libs.plugins.hilt.android)
2526
alias(libs.plugins.kotlin.compose)
2627
alias(libs.plugins.ksp)
2728
id("jacoco")
@@ -66,7 +67,7 @@ android {
6667
// setting vectorDrawables.useSupportLibrary = true means pngs won"t be generated at
6768
// build time: http://android-developers.blogspot.fr/2016/02/android-support-library-232.html
6869
vectorDrawables.useSupportLibrary = true
69-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
70+
testInstrumentationRunner = "ca.rmen.android.poetassistant.di.CustomTestRunner"
7071

7172
// The following argument makes the Android Test Orchestrator run its
7273
// "pm clear" command after each test invocation. This command ensures
@@ -184,6 +185,9 @@ android {
184185
jacoco {
185186
toolVersion = "0.8.12"
186187
}
188+
kapt {
189+
correctErrorTypes = true
190+
}
187191
android.applicationVariants.configureEach {
188192
val copyLicenseFilesTask = tasks.register<Copy>("copyLicenseFilesFor${name.replaceFirstChar{it.uppercase()}}") {
189193
from(project.rootDir)
@@ -206,10 +210,11 @@ dependencies {
206210
implementation(libs.androidx.compose.material3)
207211
implementation(libs.androidx.compose.ui.tooling.preview)
208212
implementation(libs.androidx.constraintlayout)
213+
implementation(libs.androidx.fragment.ktx)
209214
implementation(libs.androidx.preference)
210215
implementation(libs.androidx.room.runtime)
211-
implementation(libs.dagger)
212216
implementation(libs.google.material)
217+
implementation(libs.hilt.android)
213218
implementation(libs.kotlin)
214219
implementation(libs.kotlinx.coroutines.android)
215220
implementation(libs.kotlinx.coroutines.core)
@@ -225,9 +230,10 @@ dependencies {
225230
api(libs.androidx.lifecycle.viewmodel.ktx)
226231

227232
ksp(libs.androidx.room.compiler)
228-
ksp(libs.dagger.compiler)
233+
kapt(libs.hilt.android.compiler)
234+
235+
kaptTest(libs.hilt.android.compiler)
229236

230-
kspTest(libs.dagger.compiler)
231237
testImplementation(platform(libs.androidx.compose.bom))
232238
testImplementation(libs.androidx.arch.core.testing)
233239
testImplementation(libs.androidx.test.espresso.contrib)
@@ -238,6 +244,7 @@ dependencies {
238244
testImplementation(libs.androidx.test.runner)
239245
testImplementation(libs.androidx.ui.test.junit4.android)
240246
testImplementation(libs.fest.reflect)
247+
testImplementation(libs.hilt.android.testing)
241248
testImplementation(libs.junit)
242249
testImplementation(libs.kotlinx.coroutines.test)
243250
testImplementation(libs.robolectric)
@@ -255,7 +262,9 @@ dependencies {
255262
androidTestImplementation(libs.androidx.ui.test.junit4.android)
256263
androidTestImplementation(libs.fest.reflect)
257264
androidTestImplementation(libs.google.test.parameter.injector)
265+
androidTestImplementation(libs.hilt.android.testing)
258266
androidTestImplementation(libs.robolectric.annotations)
267+
kaptAndroidTest(libs.hilt.android.compiler)
259268

260269
androidTestUtil(libs.androidx.test.orchesetrator)
261270
}

app/src/androidTest/java/ca/rmen/android/poetassistant/main/ATtsTest.java

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,6 @@
2020
package ca.rmen.android.poetassistant.main;
2121

2222

23-
import android.annotation.TargetApi;
24-
import android.os.Build;
25-
26-
import org.junit.FixMethodOrder;
27-
import org.junit.Ignore;
28-
import org.junit.Rule;
29-
import org.junit.Test;
30-
import org.junit.runner.RunWith;
31-
import org.junit.runners.MethodSorters;
32-
33-
import androidx.annotation.Nullable;
34-
import androidx.annotation.StringRes;
35-
import androidx.lifecycle.Observer;
36-
import androidx.test.espresso.action.GeneralClickAction;
37-
import androidx.test.espresso.action.GeneralLocation;
38-
import androidx.test.espresso.action.Press;
39-
import androidx.test.espresso.action.Tap;
40-
import androidx.test.ext.junit.runners.AndroidJUnit4;
41-
import androidx.test.filters.LargeTest;
42-
import ca.rmen.android.poetassistant.R;
43-
import ca.rmen.android.poetassistant.Tts;
44-
import ca.rmen.android.poetassistant.TtsState;
45-
import ca.rmen.android.poetassistant.dagger.DaggerHelper;
46-
import ca.rmen.android.poetassistant.dagger.TestAppComponent;
47-
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
48-
import ca.rmen.android.poetassistant.main.rules.RetryTestRule;
49-
5023
import static androidx.test.espresso.Espresso.onView;
5124
import static androidx.test.espresso.Espresso.pressBack;
5225
import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
@@ -55,6 +28,11 @@
5528
import static androidx.test.espresso.matcher.ViewMatchers.withParent;
5629
import static androidx.test.espresso.matcher.ViewMatchers.withText;
5730
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
31+
import static org.hamcrest.Matchers.allOf;
32+
import static org.hamcrest.Matchers.endsWith;
33+
import static org.hamcrest.Matchers.greaterThan;
34+
import static org.hamcrest.Matchers.lessThan;
35+
import static org.junit.Assert.assertThat;
5836
import static ca.rmen.android.poetassistant.main.CustomViewActions.clickLastChild;
5937
import static ca.rmen.android.poetassistant.main.CustomViewActions.scrollToEnd;
6038
import static ca.rmen.android.poetassistant.main.TestAppUtils.clearPoem;
@@ -64,21 +42,48 @@
6442
import static ca.rmen.android.poetassistant.main.TestUiUtils.clickPreference;
6543
import static ca.rmen.android.poetassistant.main.TestUiUtils.openMenuItem;
6644
import static ca.rmen.android.poetassistant.main.TestUiUtils.swipeViewPagerLeft;
67-
import static org.hamcrest.Matchers.allOf;
68-
import static org.hamcrest.Matchers.endsWith;
69-
import static org.hamcrest.Matchers.greaterThan;
70-
import static org.hamcrest.Matchers.lessThan;
71-
import static org.junit.Assert.assertThat;
45+
46+
import android.annotation.TargetApi;
47+
import android.os.Build;
48+
49+
import androidx.annotation.Nullable;
50+
import androidx.annotation.StringRes;
51+
import androidx.lifecycle.Observer;
52+
import androidx.test.espresso.action.GeneralClickAction;
53+
import androidx.test.espresso.action.GeneralLocation;
54+
import androidx.test.espresso.action.Press;
55+
import androidx.test.espresso.action.Tap;
56+
import androidx.test.ext.junit.runners.AndroidJUnit4;
57+
import androidx.test.filters.LargeTest;
58+
59+
import org.junit.FixMethodOrder;
60+
import org.junit.Rule;
61+
import org.junit.Test;
62+
import org.junit.runner.RunWith;
63+
import org.junit.runners.MethodSorters;
64+
65+
import ca.rmen.android.poetassistant.R;
66+
import ca.rmen.android.poetassistant.Tts;
67+
import ca.rmen.android.poetassistant.TtsState;
68+
import ca.rmen.android.poetassistant.di.NonAndroidEntryPoint;
69+
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
70+
import ca.rmen.android.poetassistant.main.rules.RetryTestRule;
71+
import dagger.hilt.android.EntryPointAccessors;
72+
import dagger.hilt.android.testing.HiltAndroidRule;
73+
import dagger.hilt.android.testing.HiltAndroidTest;
7274

7375
@LargeTest
7476
@RunWith(AndroidJUnit4.class)
77+
@HiltAndroidTest
7578
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
7679
public class ATtsTest {
80+
@Rule(order = 0)
81+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
7782

78-
@Rule
83+
@Rule(order = 1)
7984
public RetryTestRule retry = new RetryTestRule();
8085

81-
@Rule
86+
@Rule(order = 2)
8287
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, true);
8388

8489
public static class TtsObserver implements Observer<TtsState> {
@@ -90,7 +95,6 @@ public void onChanged(@Nullable TtsState ttsState) {
9095
}
9196
}
9297

93-
9498
@Test
9599
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
96100
public void aVoiceSelectionTest() {
@@ -150,7 +154,7 @@ public void pauseTest() {
150154
}
151155

152156
private Tts getTts() {
153-
return ((TestAppComponent) DaggerHelper.INSTANCE.getAppComponent(mActivityTestRule.getActivity())).getTts();
157+
return EntryPointAccessors.fromApplication(mActivityTestRule.getActivity(), NonAndroidEntryPoint.class).tts();
154158
}
155159
private long timePoem(String poem) {
156160
TtsObserver receiver = new TtsObserver();

app/src/androidTest/java/ca/rmen/android/poetassistant/main/FavoritesTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,17 @@
4646

4747
import ca.rmen.android.poetassistant.R;
4848
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
49+
import dagger.hilt.android.testing.HiltAndroidRule;
50+
import dagger.hilt.android.testing.HiltAndroidTest;
4951

5052
@LargeTest
53+
@HiltAndroidTest
5154
@RunWith(AndroidJUnit4.class)
5255
public class FavoritesTest {
56+
@Rule(order = 0)
57+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
5358

54-
@Rule
59+
@Rule(order = 1)
5560
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, true);
5661

5762
@Test

app/src/androidTest/java/ca/rmen/android/poetassistant/main/IntegrationTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,17 @@
6262

6363
import ca.rmen.android.poetassistant.R;
6464
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
65+
import dagger.hilt.android.testing.HiltAndroidRule;
66+
import dagger.hilt.android.testing.HiltAndroidTest;
6567

6668
@LargeTest
69+
@HiltAndroidTest
6770
@RunWith(AndroidJUnit4.class)
6871
public class IntegrationTest {
72+
@Rule(order = 0)
73+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
6974

70-
@Rule
75+
@Rule(order = 1)
7176
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, true);
7277

7378
private static class IntegrationTestScenario {

app/src/androidTest/java/ca/rmen/android/poetassistant/main/PoemSaveTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737

3838
import ca.rmen.android.poetassistant.R;
3939
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
40+
import dagger.hilt.android.testing.HiltAndroidRule;
41+
import dagger.hilt.android.testing.HiltAndroidTest;
4042

4143
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
4244
import static androidx.test.espresso.Espresso.onView;
@@ -52,10 +54,13 @@
5254
import static org.junit.Assert.assertTrue;
5355

5456
@LargeTest
57+
@HiltAndroidTest
5558
@RunWith(AndroidJUnit4.class)
5659
public class PoemSaveTest {
60+
@Rule(order = 0)
61+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
5762

58-
@Rule
63+
@Rule(order = 1)
5964
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<MainActivity>(MainActivity.class, true) {
6065
@Override
6166
protected void beforeActivityLaunched() {

app/src/androidTest/java/ca/rmen/android/poetassistant/main/PoemTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import ca.rmen.android.poetassistant.R;
4545
import ca.rmen.android.poetassistant.main.reader.WordCounter;
4646
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
47+
import dagger.hilt.android.testing.HiltAndroidRule;
48+
import dagger.hilt.android.testing.HiltAndroidTest;
4749

4850
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
4951
import static androidx.test.espresso.Espresso.onView;
@@ -79,10 +81,14 @@
7981
import static org.junit.Assert.assertThat;
8082

8183
@LargeTest
84+
@HiltAndroidTest
8285
@RunWith(AndroidJUnit4.class)
8386
public class PoemTest {
8487

85-
@Rule
88+
@Rule(order = 0)
89+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
90+
91+
@Rule(order = 1)
8692
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, true);
8793

8894
@Test

app/src/androidTest/java/ca/rmen/android/poetassistant/main/RandomWordTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,18 @@
6161
import ca.rmen.android.poetassistant.BuildConfig;
6262
import ca.rmen.android.poetassistant.R;
6363
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
64+
import dagger.hilt.android.testing.HiltAndroidRule;
65+
import dagger.hilt.android.testing.HiltAndroidTest;
6466

6567
@LargeTest
68+
@HiltAndroidTest
6669
@RunWith(AndroidJUnit4.class)
6770
public class RandomWordTest {
6871

69-
@Rule
72+
@Rule(order = 0)
73+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
74+
75+
@Rule(order = 1)
7076
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, true);
7177

7278
@Test

app/src/androidTest/java/ca/rmen/android/poetassistant/main/SearchTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
import ca.rmen.android.poetassistant.R;
3535
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
36+
import dagger.hilt.android.testing.HiltAndroidRule;
37+
import dagger.hilt.android.testing.HiltAndroidTest;
3638

3739
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
3840
import static androidx.test.espresso.Espresso.onView;
@@ -60,10 +62,14 @@
6062
import static org.hamcrest.Matchers.allOf;
6163

6264
@LargeTest
65+
@HiltAndroidTest
6366
@RunWith(AndroidJUnit4.class)
6467
public class SearchTest {
6568

66-
@Rule
69+
@Rule(order = 0)
70+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
71+
72+
@Rule(order = 1)
6773
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, true);
6874

6975
@Test

app/src/androidTest/java/ca/rmen/android/poetassistant/main/SelectedTabTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,19 @@
4141

4242
import ca.rmen.android.poetassistant.R;
4343
import ca.rmen.android.poetassistant.main.rules.PoetAssistantActivityTestRule;
44+
import dagger.hilt.android.testing.HiltAndroidRule;
45+
import dagger.hilt.android.testing.HiltAndroidTest;
4446

4547
@LargeTest
4648
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
49+
@HiltAndroidTest
4750
@RunWith(AndroidJUnit4.class)
4851
public class SelectedTabTest {
4952

50-
@Rule
53+
@Rule(order = 0)
54+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
55+
56+
@Rule(order = 1)
5157
public PoetAssistantActivityTestRule<MainActivity> mActivityTestRule = new PoetAssistantActivityTestRule<>(MainActivity.class, false);
5258

5359
@Test

app/src/androidTest/java/ca/rmen/android/poetassistant/main/ShareTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,18 @@
5252

5353
import ca.rmen.android.poetassistant.R;
5454
import ca.rmen.android.poetassistant.main.rules.PoetAssistantIntentsTestRule;
55+
import dagger.hilt.android.testing.HiltAndroidRule;
56+
import dagger.hilt.android.testing.HiltAndroidTest;
5557

5658
@LargeTest
59+
@HiltAndroidTest
5760
@RunWith(AndroidJUnit4.class)
5861
public class ShareTest {
5962

60-
@Rule
63+
@Rule(order = 0)
64+
public HiltAndroidRule hiltTestRule = new HiltAndroidRule(this);
65+
66+
@Rule(order = 1)
6167
public PoetAssistantIntentsTestRule<MainActivity> mActivityTestRule = new PoetAssistantIntentsTestRule<>(MainActivity.class);
6268

6369
@Test

0 commit comments

Comments
 (0)