Repository SpyBeans seem to keep stubs when context is reused on other test class, since 2.6.x up to 2.7.0, at least
This does not seem to happen with regular beans (i.e, not JPA proxies Repository interfaces), and it seems caused by MockReset.get(bean) not returning AFTER in objectResetMocksTestExecutionListener.resetMocks, when it should. It returns NONE because SpringBootMockResolver does not find the target, apparently test.zip .
Comment From: wilkinsona
Thanks for the sample, @nightswimmings. As far as I can tell, the problem is broader than proxied Spring Data Repository interfaces. It appears to apply whenever @SpyBean is used on the output of a FactoryBean.
@MockBean is not affected as when the mock is created, it's added to MockitoBeans from where it can be retrieved and reset. Also adding spies to MockitoBeans may be a solution but I'll need to give it and any potential unwanted side-effects some more thought.
Comment From: simonbasle
Just chiming in to note that this is what's done for Spring Framework 6.2's @MockitoSpyBean, as the @MockitoBean and @MockitoSpyBean are covered by the same code for tracking in the framework version of MockitoBeans.
Comment From: wilkinsona
Moved to 3.3.x to avoid potentially destabilising 3.2.x before its final OSS release.