diff options
Diffstat (limited to 'integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java')
-rw-r--r-- | integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java b/integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java index a444f1dfe..8f9760846 100644 --- a/integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java +++ b/integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java @@ -1,19 +1,22 @@ package org.robolectric.integrationtests.axt; -import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2; +import static android.os.Build.VERSION_CODES.P; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import android.app.Activity; +import android.app.AppComponentFactory; import android.app.UiAutomation; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.os.Looper; -import androidx.fragment.app.Fragment; -import androidx.appcompat.app.AppCompatActivity; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.R; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; import androidx.lifecycle.Lifecycle.State; import androidx.test.core.app.ActivityScenario; import androidx.test.core.app.ApplicationProvider; @@ -106,6 +109,32 @@ public class ActivityScenarioTest { callbacks.clear(); } + public static class ActivityWithCustomConstructor extends Activity { + private final int intValue; + + public ActivityWithCustomConstructor(int intValue) { + this.intValue = intValue; + } + + public int getIntValue() { + return intValue; + } + } + + public static class CustomAppComponentFactory extends AppComponentFactory { + + @NonNull + @Override + public Activity instantiateActivity( + @NonNull ClassLoader cl, @NonNull String className, @Nullable Intent intent) + throws ClassNotFoundException, IllegalAccessException, InstantiationException { + if (className.contains(ActivityWithCustomConstructor.class.getName())) { + return new ActivityWithCustomConstructor(100); + } + return super.instantiateActivity(cl, className, intent); + } + } + @Test public void launch_callbackSequence() { try (ActivityScenario<TranscriptActivity> activityScenario = @@ -247,7 +276,6 @@ public class ActivityScenarioTest { } } - @Config(minSdk = JELLY_BEAN_MR2) @Test public void setRotation_recreatesActivity() { UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation(); @@ -314,4 +342,17 @@ public class ActivityScenarioTest { }); } } + + @Test + @Config(minSdk = P) + public void launchActivityWithCustomConstructor() { + try (ActivityScenario<ActivityWithCustomConstructor> activityScenario = + ActivityScenario.launch(ActivityWithCustomConstructor.class)) { + assertThat(activityScenario.getState()).isEqualTo(State.RESUMED); + activityScenario.onActivity( + activity -> { + assertThat(activity.getIntValue()).isEqualTo(100); + }); + } + } } |