我有一个在SpringBoot2.3.8中运行良好的应用程序,但是@RestClientTest的2.4.2失败了,因为不能实例化测试对象,因为没有@ConfigurationProperties的bean (由@TestConfiguration创建)。
如何更改代码,使其与2.4.x一起工作?
守则是:
@Configuration
@ConfigurationProperties(prefix = "tyntec.routetest.dsidr")
@Data
@Validated
public class DynamicSenderIdReplacementClientConfiguration {
@NotBlank
private String baseUrl;
@NotBlank
private String dsidrPath;
}
@Component
@RequiredArgsConstructor
public class DynamicSenderIdReplacementClient {
private final DynamicSenderIdReplacementClientConfiguration configuration;
}
@ExtendWith(SpringExtension.class)
@RestClientTest(DynamicSenderIdReplacementClient.class)
@AutoConfigureWebClient(registerRestTemplate = true)
class DynamicSenderIdReplacementClientWebTest {
@Autowired
private DynamicSenderIdReplacementClient cut;
@TestConfiguration
static class testConfiguration {
@Bean
@Primary
public DynamicSenderIdReplacementClientConfiguration provideConfig() {
return new DynamicSenderIdReplacementClientConfiguration() {
{
setBaseUrl(BASE_URL);
setDsidrPath(DSIDR_PATH);
}
};
}
}这在2.3.8中有效,但在2.4.2中失败
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.tyntec.routetesting.client.itest.clients.DynamicSenderIdReplacementClientConfiguration' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}发布于 2021-01-22 10:54:14
事实证明,@RestClientTest按照广告的方式工作,并抑制@TestConfiguration中的bean
使用此注释的
将禁用完全的自动配置,而只应用与rest客户端测试相关的配置(即Jackson或GSON自动配置和
@JsonComponentbean,而不是常规的@Componentbean)。
使用@Import会有所帮助。
@RestClientTest(DynamicSenderIdReplacementClient.class)
@AutoConfigureWebClient(registerRestTemplate = true)
@Import(DynamicSenderIdReplacementClientWebTest.testConfiguration.class)
class DynamicSenderIdReplacementClientWebTest {https://stackoverflow.com/questions/65357489
复制相似问题