mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-20 20:59:07 +00:00
Prior to this commit, a developer may have accidentally annotated a JUnit Jupiter test method or lifecycle method with @Autowired, and that would have potentially resulted in an exception that was hard to understand. This is because the Spring container considers any @Autowired method to be a "configuration method" when autowiring the test class instance. Consequently, such an @Autowired method would be invoked twice: once by Spring while attempting to autowire the test instance and another time by JUnit Jupiter when invoking the test or lifecycle method. The autowiring invocation of the method often leads to an exception, either because Spring cannot satisfy a dependency (such as JUnit Jupiter's TestInfo) or because the body of the method fails due to test setup that has not yet been invoked. This commit introduces validation for @Autowired test and lifecycle methods in the SpringExtension that will throw an IllegalStateException if any @Autowired method in a test class is also annotated with any of the following JUnit Jupiter annotations. - @Test - @TestFactory - @TestTemplate - @RepeatedTest - @ParameterizedTest - @BeforeAll - @AfterAll - @BeforeEach - @AfterEach Closes gh-25966