Java @配置属性don';弹簧靴2.4.2中的t工作试验
我有一个在Spring Boot 2.3.8中运行良好的应用程序,但是Java @配置属性don';弹簧靴2.4.2中的t工作试验,java,spring-boot,spring-boot-test,spring-boot-2,configurationproperties,Java,Spring Boot,Spring Boot Test,Spring Boot 2,Configurationproperties,我有一个在Spring Boot 2.3.8中运行良好的应用程序,但是@RestClientTests在2.4.2中失败,因为没有@ConfigurationProperties(由@TestConfiguration创建)的bean,所以无法实例化测试对象 如何更改代码,使其与2.4.x兼容 代码是: @Configuration @ConfigurationProperties(prefix = "tyntec.routetest.dsidr") @Data @Valid
@RestClientTest
s在2.4.2中失败,因为没有@ConfigurationProperties
(由@TestConfiguration
创建)的bean,所以无法实例化测试对象
如何更改代码,使其与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: {}
事实证明,
@RestClientTest
与广告中的一样工作,并禁止@TestConfiguration
中的bean:
使用此注释将禁用完全自动配置,而不是
仅应用与rest客户端测试相关的配置(即Jackson
或GSON自动配置和@JsonComponent
bean,但不是常规的
@Component
bean)
使用@Import
会有所帮助
@RestClientTest(DynamicSenderIdReplacementClient.class)
@AutoConfigureWebClient(registerRestTemplate = true)
@Import(DynamicSenderIdReplacementClientWebTest.testConfiguration.class)
class DynamicSenderIdReplacementClientWebTest {
将上面的代码片段拼凑在一起,您的示例在Spring Boot 2.4.1中运行良好,在
testConfiguration
中定义的DynamicSenderIdReplacementClientConfiguration
bean被注入DynamicSenderIdReplacementClient
。你能用一个完整的、最少的例子来更新你的问题吗?