@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,而不是接口
我有 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
.
如果我将 TestedService
移回 @ContextHierarchy
那么一切都很好。
事实证明,要使一切正常,RestTemplateTest 必须是 class,而不是接口