aboutsummaryrefslogtreecommitdiff
path: root/integration_tests/androidx_test/src/test/java/org/robolectric/integrationtests/axt/ActivityScenarioTest.java
diff options
context:
space:
mode:
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.java49
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);
+ });
+ }
+ }
}