Skip to content

[FSSDK-12510] fix old test issues with mockito versions#527

Open
jaeopt wants to merge 14 commits intomasterfrom
jae/fr
Open

[FSSDK-12510] fix old test issues with mockito versions#527
jaeopt wants to merge 14 commits intomasterfrom
jae/fr

Conversation

@jaeopt
Copy link
Copy Markdown
Contributor

@jaeopt jaeopt commented May 6, 2026

Fix instrumentation tests on Android API 28+

Problem

  • TransactionTooLargeException crashed the android-sdk test process when 262+ test results were bundled into a single IPC parcel exceeding Android's 1MB limit
  • Mockito cannot mock this class failures on API 28+ because the default mockito-android mock maker uses a hidden/restricted API (BaseDexClassLoader#addDexPath()) blocked since API 28
  • Root cause of Mockito failures: PR Upgrade targetSDK to 35 #516 (targetSDK 35 upgrade) downgraded mockito_ver_sdk_module from 3.6.282.28.2, which is too old to work with dexmaker-mockito-inline

Changes

  • Revert mockito_ver_sdk_module back to 3.6.28
  • Add dexmaker-mockito-inline:2.28.3 to all 6 modules — uses JVMTI bytecode rewriting instead of restricted APIs, works on API 28+
  • Add Android Test Orchestrator to android-sdk module — runs each test class in its own process, preventing parcel overflow as the test suite grows
  • Pin objenesis:2.6 to maintain API 21 compatibility (objenesis 3.x requires API 26+)
  • Set testCoverageEnabled false in all modules to avoid JVMTI agent conflict between Jacoco and dexmaker

Test plan

Existing tests will cover the changes.

Issues

  • FSSDK-12510

@jaeopt jaeopt changed the title [FSSDK-12510] fix old test build issues (mockito versions) [FSSDK-12510] fix old test issues with mockito versions May 6, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to fix Android instrumentation test failures/regressions introduced by recent dependency/tooling changes, primarily around Mockito behavior on API 28+ and large instrumentation result bundles.

Changes:

  • Updates Mockito-related Android test dependencies (Mockito version bump for SDK modules, adds dexmaker-mockito-inline, pins objenesis, disables test coverage/Jacoco).
  • Adds Android Test Orchestrator execution for the android-sdk module and updates CI emulator matrix.
  • Small test adjustments to improve stability/compatibility (timeouts, Mockito API updates, safer teardown, mocking interface instead of impl).

Reviewed changes

Copilot reviewed 18 out of 19 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
build.gradle Bumps java_core_ver and mockito_ver_sdk_module.
gradle.properties Changes fallback Maven/version value.
android-sdk/build.gradle Adds orchestrator execution + deps, disables coverage, adds packaging pickFirsts, updates Android test deps.
shared/build.gradle Disables coverage, adds packaging pickFirsts, updates Android test deps (dexmaker/objenesis).
datafile-handler/build.gradle Disables coverage, adds packaging pickFirsts, updates Android test deps (dexmaker/objenesis).
event-handler/build.gradle Disables coverage, adds packaging pickFirsts, updates Android test deps (dexmaker/objenesis).
odp/build.gradle Disables coverage, adds packaging pickFirsts, updates Android test deps (dexmaker/objenesis).
user-profile/build.gradle Disables coverage, adds packaging pickFirsts, updates Android test deps (dexmaker/objenesis).
android-sdk/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Adds explicit Mockito MockMaker extension.
shared/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Adds explicit Mockito MockMaker extension.
datafile-handler/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Adds explicit Mockito MockMaker extension.
event-handler/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Adds explicit Mockito MockMaker extension.
odp/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Adds explicit Mockito MockMaker extension.
user-profile/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Adds explicit Mockito MockMaker extension.
android-sdk/src/androidTest/java/.../OptimizelyManagerTest.java Increases latch await timeouts for stability.
android-sdk/src/androidTest/java/.../OptimizelyClientTest.java Updates deprecated Mockito interaction assertion API.
android-sdk/src/androidTest/java/.../ODPIntegrationTest.java Mocks ODPApiManager interface instead of impl.
datafile-handler/src/androidTest/java/.../BackgroundWatchersCacheTest.java Avoids NPE in teardown when setup fails.
.github/workflows/android.yml Updates emulator API matrix and targets for CI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread odp/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Outdated
Comment thread shared/src/androidTest/resources/mockito-extensions/org.mockito.plugins.MockMaker Outdated
Comment thread gradle.properties
Comment thread android-sdk/build.gradle
Comment thread .github/workflows/android.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants