@ContextConfiguration 测试父级是否有@ContextHierarchy

@ContextConfiguration in test if parent has @ContextHierarchy

我有 class 的测试,它使用 RestTemplate。现在我需要为类似的 class 编写另一个测试。 我决定将 @ContextHierarchy 移动到如下所示的单独界面

@ContextHierarchy({
        @ContextConfiguration(classes = {
                ObjectMapperConfiguration.class, // ObjectMapper
                HttpMessageConverterConfiguration.class // MappingJackson2HttpMessageConverter
        }),
        @ContextConfiguration(classes = HttpMessageConvertersAutoConfiguration.class),
        @ContextConfiguration(classes = RestTemplateAutoConfiguration.class), // RestTemplate builder
        @ContextConfiguration(classes = {
                RestTemplateConfig.class, // finally RestTemplate
                // tested service was HERE
        })
})
public interface RestTemplateTest {
}

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = TestedService.class) // now it is HERE
public class RestTest implements RestTemplateTest {
}

问题是关于代码不起作用。我从 Spring 收到错误消息,指出无法创建 TestedService 因为没有 RestTemplate.

类型的 bean

如果我将 TestedService 移回 @ContextHierarchy 那么一切都很好。

事实证明,要使一切正常,RestTemplateTest 必须是 class,而不是接口