mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
eb4bf1c0a6
Prior to this commit, the MockitoResetTestExecutionListener failed to reset mocks created via @MockitoBean if the @MockitoBean field was declared in an enclosing class for a @Nested test class. In addition, the MockitoSession was not properly managed by the MockitoTestExecutionListener. This commit addresses those issue as follows. 1) The hasMockitoAnnotations() utility method has been overhauled so that it finds Mockito annotations not only on the current test class and on fields of the current test class but also on interfaces, superclasses, and enclosing classes for @Nested test classes as well as on fields of superclasses and enclosing classes. That allows the MockitoResetTestExecutionListener to properly detect that it needs to reset mocks for fields declared in enclosing classes for @Nested classes. 2) MockitoTestExecutionListener has been revised so that it only initializes a MockitoSession before each test method and closes the MockitoSession after each test method. In addition, it now only manages the MockitoSession when hasMockitoAnnotations() returns true for the current test class (which may be a @Nested test class). Furthermore, it no longer attempts to initialize a MockitoSession during the prepareTestInstance() callback since that results in an UnfinishedMockingSessionException for a @Nested test class due to the fact that a MockitoSession was already created for the current thread for the enclosing test class. Closes gh-33676