org.mockito.exceptions.misusing
public class UnnecessaryStubbingException extends MockitoException
MockitoRule.strictness(Strictness)
or MockitoRule.silent()
MockitoJUnitRunner.Silent
MockitoSession
MockitoHint
.
Unnecessary stubbings are stubbed method calls that were never realized during test execution. Example:
//code under test:
...
String result = translator.translate("one")
...
//test:
...
when(translator.translate("one")).thenReturn("jeden"); // <- stubbing realized during code execution
when(translator.translate("two")).thenReturn("dwa"); // <- stubbing never realized
...
Notice that one of the stubbed methods were never realized in the code under test, during test execution.
The stray stubbing might be an oversight of the developer, the artifact of copy-paste
or the effect not understanding the test/code.
Either way, the developer ends up with unnecessary test code.
In order to keep the codebase clean & maintainable it is necessary to remove unnecessary code.
Otherwise tests are harder to read and reason about.
Mockito JUnit Runner triggers UnnecessaryStubbingException
only when none of the test methods use the stubbings.
This means that it is ok to put default stubbing in a 'setup' method or in test class constructor.
That default stubbing needs to be used at least once by one of the test methods.
To find out more about detecting unused stubbings see MockitoHint
.
See javadoc for MockitoRule
to understand the behavior or Mockito JUnit Rules.
See javadoc for MockitoJUnitRunner
to find out how Mockito JUnit Runner detects unused stubs.
See javadoc for MockitoSession
to find out about detecting unused stubs without JUnit.
Constructor and Description |
---|
UnnecessaryStubbingException(String message) |
getUnfilteredStackTrace
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
public UnnecessaryStubbingException(String message)