Properly resolve @TestBean factory method within class hierarchy
Prior to this commit, the search algorithm used to locate a @TestBean factory method within a test class hierarchy incorrectly found factory methods declared in subclasses or nested test classes "below" the class in which the @TestBean field was declared. This resulted in "duplicate bean override" failures for @TestBean overrides which are clearly not duplicates but rather "overrides of an override". This commit ensures that @TestBean factory method resolution is consistent in type hierarchies as well as in enclosing class hierarchies (for @Nested test classes) by beginning the search for a factory method in the class which declares the @TestBean field. Closes gh-34204
This commit is contained in:
@@ -92,8 +92,10 @@ Java::
|
||||
|
||||
[TIP]
|
||||
====
|
||||
Spring searches for the factory method to invoke in the test class, in the test class
|
||||
hierarchy, and in the enclosing class hierarchy for a `@Nested` test class.
|
||||
To locate the factory method to invoke, Spring searches in the class in which the
|
||||
`@TestBean` field is declared, in one of its superclasses, or in any implemented
|
||||
interfaces. If the `@TestBean` field is declared in a `@Nested` test class, the enclosing
|
||||
class hierarchy will also be searched.
|
||||
|
||||
Alternatively, a factory method in an external class can be referenced via its
|
||||
fully-qualified method name following the syntax `<fully-qualified class name>#<method name>`
|
||||
|
||||
Reference in New Issue
Block a user