Clear ShadowAccessibilityWindowInfo fields during recycle

This ensures that when AccessibilityWindowInfo objects
are recycled, they won't retain any of the shadow fields.

PiperOrigin-RevId: 694914406
2 files changed
tree: c1be0f7446abeecd4db3526f1d1aec2f4198d01e
  1. .devcontainer/
  2. .github/
  3. annotations/
  4. buildSrc/
  5. errorprone/
  6. gradle/
  7. images/
  8. integration_tests/
  9. junit/
  10. nativeruntime/
  11. pluginapi/
  12. plugins/
  13. preinstrumented/
  14. processor/
  15. resources/
  16. robolectric/
  17. sandbox/
  18. scripts/
  19. shadowapi/
  20. shadows/
  21. testapp/
  22. utils/
  23. .gitignore
  24. ARCHITECTURE.md
  25. build.gradle.kts
  26. CODE_OF_CONDUCT.md
  27. gradle.properties
  28. gradlew
  29. gradlew.bat
  30. LICENSE
  31. README.md
  32. settings.gradle.kts
  33. WORKSPACE
README.md

Build Status GitHub release

Robolectric is the industry-standard unit testing framework for Android. With Robolectric, your tests run in a simulated Android environment inside a JVM, without the overhead and flakiness of an emulator. Robolectric tests routinely run 10x faster than those on cold-started emulators.

Robolectric supports running unit tests for 14 different versions of Android, ranging from Lollipop (API level 21) to U (API level 34).

Usage

Here's an example of a simple test written using Robolectric:

@RunWith(AndroidJUnit4.class)
public class MyActivityTest {

  @Test
  public void clickingButton_shouldChangeResultsViewText() {
    Activity activity = Robolectric.setupActivity(MyActivity.class);

    Button button = (Button) activity.findViewById(R.id.press_me_button);
    TextView results = (TextView) activity.findViewById(R.id.results_text_view);

    button.performClick();
    assertThat(results.getText().toString(), equalTo("Testing Android Rocks!"));
  }
}

For more information about how to install and use Robolectric on your project, extend its functionality, and join the community of contributors, please visit robolectric.org.

Install

Starting a New Project

If you'd like to start a new project with Robolectric tests, you can refer to deckard (for either Maven or Gradle) as a guide to setting up both Android and Robolectric on your machine.

build.gradle

testImplementation "junit:junit:4.13.2"
testImplementation "org.robolectric:robolectric:4.13"

Building and Contributing

Robolectric is built using Gradle. Both Android Studio and IntelliJ can import the top-level build.gradle.kts file and will automatically generate their project files from it.

To get Robolectric up and running on your machine, check out this guide.

To get a high-level overview of Robolectric's architecture, check out ARCHITECTURE.md.

Using Snapshots

If you would like to live on the bleeding edge, you can try running against a snapshot build. Keep in mind that snapshots represent the most recent changes on the master and may contain bugs.

build.gradle

repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}

dependencies {
    testImplementation "org.robolectric:robolectric:4.14-SNAPSHOT"
}