Add ThenThrowCheckedExceptionToRuntimeException recipe#954
Merged
Conversation
Mockito 3+ validates that checked exceptions passed to `thenThrow()` are declared in the mocked method's `throws` clause. This recipe replaces undeclared checked exception class literals with `RuntimeException.class` and cleans up unused imports.
- Replace manual method name/type checks with MethodMatcher - Use ListUtils.map instead of boolean changed + manual loop - Inline local variables and combine nested conditionals
timtebeek
approved these changes
Apr 7, 2026
…ationTest The inline stub classes didn't extend Runner, causing compilation errors on CI. The real PowerMockRunner is already on the classpath via classpathFromResources, so the stubs are unnecessary.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ThenThrowCheckedExceptionToRuntimeExceptionthat replaces checked exception class literals inthenThrow()calls withRuntimeException.classwhen the mocked method does not declare the exception in itsthrowsclauseMockito1to3Migration(which chains into 1to4 and 1to5)maybeRemoveImportContext: In Mockito 3+,
thenThrow()validates that checked exceptions are declared in the mocked method'sthrowsclause. Code likewhen(mock.method()).thenThrow(Exception.class)that worked in Mockito 1.x fails at runtime withMockitoException: Checked exception is invalid for this method!after migration.