# Robolectric changelog > Runs Android unit tests on the JVM, without an emulator or a device. - Vendor: Robolectric - Category: Developer Tools - Official site: https://robolectric.org - Tracked by: What's New (https://whatsnew.fyi/product/robolectric) - Harvested from: GitHub (robolectric/robolectric) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### robolectric-4.17-beta-2 — Robolectric 4.17 Beta 2 - Date: 2026-07-18 - Version: robolectric-4.17-beta-2 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.17-beta-2 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.17-beta-2 - Labels: Pre-release - **fixed** — Fix issue #11345 - **changed** — Enable CONSCRYPT mode for Mac arm64, making CONSCRYPT mode available on all supported platforms Robolectric 4.17 Beta 2 is a minor release that fixes https://github.com/robolectric/robolectric/issues/11345. It also enables CONSCRYPT mode for Mac arm64, meaning that CONSCRYPT mode is now enabled for all platforms supported by Robolectric. **Full Changelog**: https://github.com/robolectric/robolectric/compare/robolectric-4.17-beta-1...robolectric-4.17-beta-2 ### robolectric-4.17-beta-1 — Robolectric 4.17-beta-1 - Date: 2026-07-15 - Version: robolectric-4.17-beta-1 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.17-beta-1 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.17-beta-1 - Labels: Pre-release - **added** — Support for SDK 37 - **removed** — AndroidVersions has been removed in favor of using android.os.Build constants - **changed** — ShadowCameraCharacteristics.set(Key, Object) has been changed to set(Key, T) to correctly reflect type enforcement in the framework - **added** — Shadow for getDeviceOwnerComponentOnAnyUser - **added** — ShadowTelMan implementation of get/setPreferredOpportunisticDataSubscription - **fixed** — UiModeManager contrast handling in in-development SDK - **changed** — Make all static fields emitted by Reflector volatile - **changed** — Update listener logic of getProfileProxy to match actual behavior - **fixed** — ShadowPausedLooper#poll when sync barrier is blocking the queue - **changed** — Update ShadowTelephonyManager to support updateAvailalbeNetworks - **fixed** — UserManager.isMainUser on in-development SDK - **added** — Robolectric support for AccessibilityWindowInfo.get/setRegionInScreen() - **added** — Support for mouse wheel scroll events to the simulator - **added** — SurroundingTextCallback to ShadowAccessibilityInputConnection - **added** — setInformationElements() to WifiScanResultBuilder - **added** — isWallpaperBackupEligible and getWallpaperFile with cropping - **deprecated** — Scheduler#size is unsupported on SDKs greater than Baklava Robolectric 4.17-beta-1 supports SDK 37 and contains many other features and enhancements. Please note you may need to add jvmFlags configuration when using JDKs >= 17 at https://robolectric.org/getting-started/ If you have any issues, please file them [here](https://github.com/robolectric/robolectric/issues). ##### Breaking Changes * AndroidVersions has been removed in favor of using android.os.Build constants * ShadowCameraCharacteristics.set(Key, Object) has been changed to set(Key, T), in order to correctly reflect type enforcement in the framework ##### What's Changed * Disable httpclient tests in Github CI by @hoisie in https://github.com/robolectric/robolectric/pull/10553 * Use Java 21 for CodeQL by @hoisie in https://github.com/robolectric/robolectric/pull/10554 * Update roborazzi to v1.48.0 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10561 * Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.12 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10557 * Update `AndroidVersions` Javadoc by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10556 * Make Scheduler#size as unsupported on SDKs > Baklava. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10564 * Update shadows/httpclient to use prebuilt legacy http client for tests by @hoisie in https://github.com/robolectric/robolectric/pull/10562 * Add shadow for getDeviceOwnerComponentOnAnyUser. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10565 * Add ShadowTelMan implementation of get/setPreferredOpportunisticDataSubscription by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10567 * Fix UiModeManager contrast handling in in-development SDK. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10568 * Make all static fields emitted by Reflector volatile. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10569 * Update listener logic of getProfileProxy to match actual behavior. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10570 * Update mockito monorepo to v5.19.0 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10560 * Update kotlin monorepo to v2.2.10 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10558 * Fix ShadowPausedLooper#poll when sync barrier is blocking the queue. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10571 * Update `ShadowTelephonyManager` to support `updateAvailalbeNetworks` by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10574 * Update Android V (SDK 35) to build id 13954326 by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10575 * Fix UserManager.isMainUser on in-development SDK. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10576 * Adds robolectric support for AccessibilityWindowInfo.get/setRegionInScreen(). by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10577 * Remove unused dependencies by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10566 * Add support for mouse wheel scroll events to the simulator by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10578 * Update Javadoc of {get,peek}NextStartedService to better reflect the actual implementation by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10585 * Add a script to generate a legacy http client bundle by @hoisie in https://github.com/robolectric/robolectric/pull/10555 * Add SurroundingTextCallback to ShadowAccessibilityInputConnection. by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10591 * Adds setInformationElements() to WifiScanResultBuilder by @copybara-service[bot] in https://github.com/robolectric/robolectric/pull/10593 _[Truncated at 4000 characters — full notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.17-beta-1]_ ### robolectric-4.16.1 — Robolectric 4.16.1 - Date: 2026-01-21 - Version: robolectric-4.16.1 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.16.1 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.16.1 Robolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of [FingerprintManager](https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager) in the Android Framework, as well as some improvements to the `VirtualDeviceManager` shadow. **Full Changelog**: https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1 ### robolectric-4.16 — Robolectric 4.16 - Date: 2025-08-25 - Version: robolectric-4.16 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.16 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.16 Robolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22). One exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36. If you have any issues, please file them [here](https://github.com/robolectric/robolectric/issues). ##### What's Changed * Reuse `ShadowUIModeManager` in `ShadowUIModeManagerTest` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10368 * Update AndroidX by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10373 * Update dependency gradle to v8.14.2 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10372 * Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10371 * Update dependency org.bouncycastle:bcprov-jdk18on to v1.81 by @renovate[bot] in https://github.com/robolectric/robolectric/pull/10374 * Fix ApplicationInfo inconsistencies in Robolectric. in https://github.com/robolectric/robolectric/pull/10375 * Add shadow for new resolveActivityAsUser variant. in https://github.com/robolectric/robolectric/pull/10377 * Adjust to indevelopment SDK changes. in https://github.com/robolectric/robolectric/pull/10379 * Adding support to the Simulator for picking up the device configuration from a Configurer. in https://github.com/robolectric/robolectric/pull/10381 * Clean up SDK ranges for shadow methods in Baklava. in https://github.com/robolectric/robolectric/pull/10380 * Add a shadow for Equalizer in https://github.com/robolectric/robolectric/pull/10384 * Update example to be consistent with robolectric.org by @seadowg in https://github.com/robolectric/robolectric/pull/7475 * Update the `simulator-gradle-plugin` to depends on AGP `gradle-api` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10386 * Replace custom `getOrDefault()` with the corresponding Java method by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10370 * Fix Javadoc for `ShadowPausedLooper` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10387 * Fix condition in `ResourceHelper#parseFloatAttribute()` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10369 * Validate listener in `ShadowAccountManager#addOnAccountsUpdatedListener()` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10361 * Add support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in https://github.com/robolectric/robolectric/pull/10390 * Lazily register the simulator plugin by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10391 * Enable stricter plugin validation by @hoisie in https://github.com/robolectric/robolectric/pull/10388 * Add the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in https://github.com/robolectric/robolectric/pull/10395 * Fix various small warnings by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10394 * Add shadow implement of AccessibilityService#getRootInActiveWindow in https://github.com/robolectric/robolectric/pull/10397 * Add more information to the generated POM file by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10392 * Change ShadowChoreographer.getDefaultFrameDelay into a shadow method. in https://github.com/robolectric/robolectric/pull/10404 * Restore removed methods from `Config` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10406 * Add shadow override for Network SocketFactory. in https://github.com/robolectric/robolectric/pull/10409 * Add missing deprecations to some `Config.Builder` methods by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10408 * Remove `testDebugUnitTest` from the dependencies of the `simulator` task by @MGaetan89 in https://github.com/robolectric/robolectric/pull/10413 * Me _[Truncated at 4000 characters — full notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.16]_ ### robolectric-4.16-beta-1 — Robolectric 4.16-beta-1 - Date: 2025-08-15 - Version: robolectric-4.16-beta-1 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.16-beta-1 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.16-beta-1 - Labels: Pre-release NOTE: Robolectric 4.16-beta-1 is an outdated preview release; please use [4.16](https://github.com/robolectric/robolectric/releases/tag/robolectric-4.16) or later instead. ### robolectric-4.15.1 — Robolectric 4.15.1 - Date: 2025-06-21 - Version: robolectric-4.15.1 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.15.1 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.15.1 Robolectric 4.15.1 is a minor release that fixes https://github.com/robolectric/robolectric/issues/9595, where the onClick handler now being invoked in Compose on certain API levels. Thanks to @GisoBartels for the fix. It also fixes https://github.com/robolectric/robolectric/issues/10419, where a Java 16 dependency was added to Robolectric, even though many API levels should support Java 11. Thanks to @yschimke for the report and @utzcoz for the fix. **Full Changelog**: https://github.com/robolectric/robolectric/compare/robolectric-4.15...robolectric-4.15.1 ### robolectric-4.15 — Robolectric 4.15 - Date: 2025-06-19 - Version: robolectric-4.15 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.15 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.15 Robolectric 4.15 contains a lot of minor improvements, fidelity improvements, bug fixes, and shadow API enhancements. It also introduces the [Robolectric Simulator](https://robolectric.org/simulator/), which makes it possible to launch an interactive preview of Android UI in a Robolectric environment. **NOTE** Robolectric 4.15 does **NOT** support Android Baklava (SDK 36). Baklava will be supported in Robolectric 4.16. If you encounter any issues, please file them on the GitHub issues page. A huge thanks to @MGaetan89 and @utzcoz for all of their hard work that went into this release. ##### What's Changed The following symbols have been removed in Robolectric 4.15. | Removed symbol | Replacement | |-----|-----| | `AndroidManifest#supportsLegacyResourcesMode()` | N/A | | `AndroidManifest#supportsBinaryResourcesMode()` | N/A | | `ConfigMerger` | `Provider` | | `DependencyResolver#getLocalArtifactUrls(DependencyJar)` | `DependencyResolver#getLocalArtifactUrl(DependencyJar)` | | `Fs#fileFromPath(String path)` | `Fs#fromUrl(path)` | | `Fs#newFile(File file)` | `file.toPath()` | | `FsFile#getPath()` | `Fs#externalize(this)` | | `FsFile#join(String name)` | `this.resolve(name)` | | `InvokeDynamicClassInstrumentor` | `ClassInstrumentor` | | `ManifestIdentifier(Path, Path, Path, String, List)` | `ManifestIdentifier(String, Path, Path, Path, List)` | | `MavenManifestFactory` | N/A | | `PackageItemData#getClassName()` | `PackageItemData#getName()` | | `Provider` | `javax.inject.Provider` | | `Qualifiers#addScreenWidth(String, int)` | `Configuration#screenWidthDp` | | `Qualifiers#addSmallestScreenWidth(String, int)` | `Configuration#smallestScreenWidthDp` | | `Qualifiers#getOrientation(String)` | `Configuration#orientation` | | `Qualifiers#getPlatformVersion(String)` | `Build.VERSION#SDK_INT` | | `Qualifiers#getScreenWidth(String)` | `Configuration#screenWidthDp` | | `Qualifiers#getSmallestScreenWidth(String)` | `Configuration#smallestScreenWidthDp` | | `RoboSettings` | Set the specific system property directly | | `Scheduler#idleConstantly(boolean)` | `Scheduler#setIdleState(IdleState)` | | `SdkPicker` | `DefaultSdkPicker` | | `ShadowApplication#addWakeLock(PowerManager.WakeLock wl)` | `ShadowPowerManager.addWakeLock(wl)` | | `ShadowApplication#clearWakeLocks()` | `ShadowPowerManager.clearWakeLocks()` | | `ShadowApplication#getAppWidgetManager()` | `Context#getSystemService(Context.APPWIDGET_SERVICE)` | | `ShadowApplication#getBluetoothAdapter()` | `BluetoothManager#getAdapter()` | | `ShadowApplication#getForegroundThreadScheduler()` | `Robolectric.getForegroundThreadScheduler()` | | `ShadowApplication#getInstance()` | `shadowOf(RuntimeEnvironment.getApplication())` | | `ShadowApplication#getLatestWakeLock()` | `ShadowPowerManager.getLatestWakeLock()` | | `ShadowMap#convertToShadowName(String)` | N/A | | `XmlResourceParserImpl(Document, String, String, String, ResourceTable)` | `XmlResourceParserImpl(Document, Path, String, String, ResourceTable)` | ###### List of changes * Properly disable API 35 on Windows in `graphics_tests.yml` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9720 * Add @InDevelopment annotation to ShadowInputMethodManager#hideSoftInputFromWindow https://github.com/robolectric/robolectric/pull/9721 * Run tests against API 35 by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9719 * Update Ubuntu runners to use `ubuntu-latest` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9725 * Make ContextTest euicc tests work on device that doesn't support it by @utzcoz in https://github.com/robolectric/robolectric/pull/9726 * Bump targetSdk to 35 as much as possible for integration_tests by @utzcoz in https://github.com/robolectric/robolectric/pull/9727 * Bump error-prone from 2.34.0 to 2.35.1 by @dependabot in https://github.com/robolectric/robolectric/pull/9730 * Bump com.diffplu _[Truncated at 4000 characters — full notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.15]_ ### robolectric-4.15-beta-1 — Robolectric 4.15-beta-1 - Date: 2025-06-06 - Version: robolectric-4.15-beta-1 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.15-beta-1 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.15-beta-1 - Labels: Pre-release NOTE: Robolectric 4.15-beta-1 is an outdated preview release; please use [4.15](https://github.com/robolectric/robolectric/releases/tag/robolectric-4.15) or later instead. ### robolectric-4.14.1 — Robolectric 4.14.1 - Date: 2024-11-21 - Version: robolectric-4.14.1 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.14.1 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.14.1 Robolectric 4.14.1 is a minor release that fixes #9732, a regression when loading Typeface objects in legacy graphics mode. **Full Changelog**: https://github.com/robolectric/robolectric/compare/robolectric-4.14...robolectric-4.14.1 ### robolectric-4.14 — Robolectric 4.14 - Date: 2024-11-15 - Version: robolectric-4.14 - Original notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.14 - Permalink: https://whatsnew.fyi/product/robolectric/releases/robolectric-4.14 Robolectric 4.14 adds support for Android V (SDK 35)! If you encounter any issues, please file them on the GitHub issues page. Thanks to everyone who contributed to the release, especially our GSoC contributors @Mia0451 and @Devashishbasu! ##### What's Changed * Bump roborazzi from 1.20.0 to 1.21.0 by @dependabot in https://github.com/robolectric/robolectric/pull/9270 * Update snapshot version in Readme by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9271 * Remove obsolete reference to per-sdk shadows https://github.com/robolectric/robolectric/pull/9272 * Remove google internal bug references from ExtractAarTransform. https://github.com/robolectric/robolectric/pull/9273 * Expose SimplePerfStatsReporter#finalReport. https://github.com/robolectric/robolectric/pull/9275 * Skip instrumenting classes with junit methods https://github.com/robolectric/robolectric/pull/9276 * Update setDelegatedScopes to clear previously delegated scopes. https://github.com/robolectric/robolectric/pull/9279 * Make fields of ShadowBatteryManager static for context level instance by @Devashishbasu in https://github.com/robolectric/robolectric/pull/9278 * Do some minor cleanup in `SandboxClassLoader` https://github.com/robolectric/robolectric/pull/9280 * Fix XML validation error in testapp's AndroidManifest.xml https://github.com/robolectric/robolectric/pull/9282 * Replace `androidx.test.annotation.Beta` with `com.google.common.annotations.Beta` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9277 * Add support for RangingResult.Builder in ShadowRangingResult for V. https://github.com/robolectric/robolectric/pull/9283 * Add support for RangingResult.Builder in ShadowRangingResult for V. https://github.com/robolectric/robolectric/pull/9285 * Add tests to `ShadowSharedPreferences` by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9287 * Add a ctesque test for andoid.media.MediaPlayer https://github.com/robolectric/robolectric/pull/9289 * Bump Gradle to 8.9 by @MGaetan89 in https://github.com/robolectric/robolectric/pull/9291 * Support @ClassName in function return type by @Mia0451 in https://github.com/robolectric/robolectric/pull/9268 * Add special case handling for NoClassDefError in SandboxTestRunner https://github.com/robolectric/robolectric/pull/9294 * Remove additional unused logic for legacy resources https://github.com/robolectric/robolectric/pull/9296 * Remove looseSignatures usage from ShadowArscApkAssets9 by @Mia0451 in https://github.com/robolectric/robolectric/pull/9299 * Remove looseSignatures usage from ShadowAudioManager by @Mia0451 in https://github.com/robolectric/robolectric/pull/9300 * Remove looseSignatures usage from ShadowAppOpsManager by @Mia0451 in https://github.com/robolectric/robolectric/pull/9297 * Keep parameter name of noteProxyOpNoThrow same as origin method by @utzcoz in https://github.com/robolectric/robolectric/pull/9301 * Remove looseSignatures usage from ShadowActivityManager by @Mia0451 in https://github.com/robolectric/robolectric/pull/9293 * Remove looseSignatures usage from ShadowActivityThread by @Mia0451 in https://github.com/robolectric/robolectric/pull/9295 * Add support for ImageDecoder.createSource(File) by @hoisie in https://github.com/robolectric/robolectric/pull/9302 * Remove looseSignatures usage from ShadowAudioTrack by @Mia0451 in https://github.com/robolectric/robolectric/pull/9303 * Remove looseSignatures usage from ShadowBackupDataInput by @Mia0451 in https://github.com/robolectric/robolectric/pull/9304 * Remove looseSignatures usage from ShadowBitmap by @Mia0451 in https://github.com/robolectric/robolectric/pull/9306 * Remove looseSignatures usage from ShadowBluetoothDevice by @Mia0451 in https://github.com/robolectric/robolectric/pull/9308 * Remove looseSignatures usage from ShadowContentProvider by @Mia0451 in https://github.com/robolectric/robolectric/pull/9309 * Remove looseSignatures usage from ShadowContex _[Truncated at 4000 characters — full notes: https://github.com/robolectric/robolectric/releases/tag/robolectric-4.14]_