Java @配置属性don';弹簧靴2.4.2中的t工作试验

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

我有一个在Spring Boot 2.3.8中运行良好的应用程序,但是
@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
。你能用一个完整的、最少的例子来更新你的问题吗?