Remove BlankUiTestActivityTestCase.
Use BaseActivityTestRule<BlankUiTestActivity> instead.
Bug: 369884095
Change-Id: I6da19249d20fd31a369e00bee98f2a0d52fbca02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6035967
Commit-Queue: Ted Choc <[email protected]>
Reviewed-by: Andrew Grieve <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1385154}
diff --git a/docs/testing/android_test_instructions.md b/docs/testing/android_test_instructions.md
index 5b333a7..dd047b0 100644
--- a/docs/testing/android_test_instructions.md
+++ b/docs/testing/android_test_instructions.md
@@ -10,8 +10,8 @@
mocking) Android APIs.
- **[Instrumentation Tests]**: JUnit tests that run on devices / emulators.
- **Unit Instrumentation Tests**: Unit tests that do not require
- initializing the Content layer. These use [BaseActivityTestRule] or
- [BlankUiTestActivityTestCase] based on `BaseActivityTestRule`.
+ initializing the Content layer. These use [BaseActivityTestRule] often
+ using [BlankUiTestActivity].
- **Integration Instrumentation Tests**: Instrumentation tests that require
initializing the Content layer to test a certain feature in the end-to-end
flow. These typically use more specialized test rules such as
@@ -21,7 +21,7 @@
[Robolectric]: android_robolectric_tests.md
[Instrumentation Tests]: android_instrumentation_tests.md
[BaseActivityTestRule]: https://source.chromium.org/chromium/chromium/src/+/main:base/test/android/javatests/src/org/chromium/base/test/BaseActivityTestRule.java
-[BlankUiTestActivityTestCase]: https://source.chromium.org/chromium/chromium/src/+/main:ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java
+[BlankUiTestActivity]: https://source.chromium.org/chromium/chromium/src/+/main:ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivity.java
[ContentShellActivityTestRule]: https://source.chromium.org/chromium/chromium/src/+/main:content/shell/android/javatests/src/org/chromium/content_shell_apk/ContentShellActivityTestRule.java
[ChromeActivityTestRule]: https://source.chromium.org/chromium/chromium/src/+/main:chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeActivityTestRule.java
diff --git a/docs/ui/android/night_mode.md b/docs/ui/android/night_mode.md
index 0a650e9..3c55ec7 100644
--- a/docs/ui/android/night_mode.md
+++ b/docs/ui/android/night_mode.md
@@ -128,7 +128,7 @@
* Use class parameter [`NightModeTestUtils.NightModeParams.class`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=NightModeTestUtils.NightModeParams)
* Pass in a boolean parameter that indicates night mode state in constructor
* Set up night mode in constructor by calling [`NightModeTestUtils#setUpNightModeForBlankUiTestActivity()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=setUpNightModeForBlankUiTestActivity&sq=package:chromium) and [`RenderTestRule#setNightModeEnabled()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/RenderTestRule.java?type=cs&q=setNightModeEnabled)
-* During [`tearDownTest()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java?type=cs&q=tearDownTest), reset night mode state by calling [`NightModeTestUtils#tearDownNightModeForBlankUiTestActivity()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=tearDownNightModeForBlankUiTestActivity)
+* During `tearDown()`, reset night mode state by calling [`NightModeTestUtils#tearDownNightModeForBlankUiTestActivity()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=tearDownNightModeForBlankUiTestActivity)
See [this CL](https://chromium-review.googlesource.com/c/chromium/src/+/1613883) as an example
diff --git a/tools/android/generate_java_test/generate_java_test.py b/tools/android/generate_java_test/generate_java_test.py
index a4321bd..5008439 100755
--- a/tools/android/generate_java_test/generate_java_test.py
+++ b/tools/android/generate_java_test/generate_java_test.py
@@ -52,15 +52,31 @@
package %s;
+import android.app.Activity;
+
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.runner.RunWith;
+import org.chromium.base.test.BaseActivityTestRule;
+import org.chromium.base.test.util.Batch;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.ui.test.util.BlankUiTestActivityTestCase;
+import org.chromium.ui.test.util.BlankUiTestActivity;
/** Instrumentation tests for {@link %s}. */
@RunWith(ChromeJUnit4ClassRunner.class)
-public class %sInstrumentationTest extends BlankUiTestActivityTestCase {
+@Batch(Batch.PER_CLASS)
+public class %sInstrumentationTest {
+ @ClassRule
+ public static BaseActivityTestRule<BlankUiTestActivity> sActivityTestRule =
+ new BaseActivityTestRule<>(BlankUiTestActivity.class);
+ private static Activity sActivity;
+
+ @BeforeClass
+ public static void setupSuite() {
+ sActivity = sActivityTestRule.launchActivity(null);
+ }
}
'''
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
index abb6466..be5c9ea 100644
--- a/ui/android/BUILD.gn
+++ b/ui/android/BUILD.gn
@@ -531,7 +531,6 @@
"javatests/src/org/chromium/ui/test/transit/SoftKeyboardCondition.java",
"javatests/src/org/chromium/ui/test/transit/SoftKeyboardElement.java",
"javatests/src/org/chromium/ui/test/util/BlankUiTestActivity.java",
- "javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java",
"javatests/src/org/chromium/ui/test/util/DeviceRestriction.java",
"javatests/src/org/chromium/ui/test/util/GmsCoreVersionRestriction.java",
"javatests/src/org/chromium/ui/test/util/MockitoHelper.java",
diff --git a/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java b/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java
deleted file mode 100644
index 56bc021..0000000
--- a/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2018 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.ui.test.util;
-
-import androidx.test.runner.lifecycle.Stage;
-
-import org.junit.Rule;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import org.chromium.base.test.BaseActivityTestRule;
-import org.chromium.base.test.util.ApplicationTestUtils;
-
-/**
- * Test case to instrument BlankUiTestActivity for UI testing scenarios.
- * Recommend to use setUpTest() and tearDownTest() to setup and tear down instead of @Before and
- * @After.
- */
-public class BlankUiTestActivityTestCase {
- private BlankUiTestActivity mActivity;
-
- private final BaseActivityTestRule<? extends BlankUiTestActivity> mActivityTestRule;
-
- // Disable animations to reduce flakiness.
- @Rule public final TestRule ruleChain;
-
- /** Default constructor that creates a {@link BlankUiTestActivity} as expected. */
- public BlankUiTestActivityTestCase() {
- this(new BaseActivityTestRule<BlankUiTestActivity>(BlankUiTestActivity.class));
- }
-
- /**
- * Constructor to allow subclasses to inject activity and rule subclasses.
- * @param activityTestRule Injected rule to use for activity interactions.
- */
- protected BlankUiTestActivityTestCase(
- BaseActivityTestRule<? extends BlankUiTestActivity> activityTestRule) {
- mActivityTestRule = activityTestRule;
- ruleChain = RuleChain.outerRule(mActivityTestRule).around(new TestDriverRule());
- }
-
- /** TestRule to setup and tear down for each test. */
- public final class TestDriverRule implements TestRule {
- @Override
- public Statement apply(final Statement base, Description description) {
- return new Statement() {
- @Override
- public void evaluate() throws Throwable {
- beforeActivityLaunch();
- mActivityTestRule.launchActivity(null);
- ApplicationTestUtils.waitForActivityState(
- mActivityTestRule.getActivity(), Stage.RESUMED);
- setUpTest();
- try {
- base.evaluate();
- } finally {
- tearDownTest();
- }
- }
- };
- }
- }
-
- public void beforeActivityLaunch() throws Exception {}
-
- // Override this to setup before test.
- public void setUpTest() throws Exception {
- mActivity = mActivityTestRule.getActivity();
- }
-
- // Override this to tear down after test.
- public void tearDownTest() throws Exception {}
-
- public BlankUiTestActivity getActivity() {
- return mActivity;
- }
-}