Конечная точка работоспособности весенней загрузки не найдена в тестах

#java #spring #spring-boot #exception #spring-boot-actuator

Вопрос:

Я работаю над приложением Spring Boot и написал пользовательскую конечную точку привода, которая использует встроенную конечную точку работоспособности и переносит ее содержимое в определенный формат, необходимый для бизнеса. Проблема в том, что когда я обычно запускаю приложение, все работает так, как ожидалось, однако в тестах я получаю ошибку, в которой HealthController required a bean of type 'org.springframework.boot.actuate.health.HealthEndpoint' that could not be found. вы знаете, где моя ошибка?

Пользовательская конечная точка выглядит примерно так:

 @Endpoint(
  id = "custom-health"
)
@Component
@RequiredArgsConstructor
public class HealthController {

  private final HealthEndpoint healthEndpoint;
  
  @ReadOperation
  public CustomHealthComponent health() {
      //some code that is mapping from the internally used HealthEndpoint models to the custom models
      return ...;
  }
 

Этот класс сканируется при запуске приложения следующим образом:

 @SpringBootApplication(exclude = {
  SecurityAutoConfiguration.class,
  ManagementWebSecurityAutoConfiguration.class
})
@EnableTransactionManagement
@EnableJpaRepositories(basePackageClasses = {
    //some classes...
})
@EntityScan(basePackageClasses = {
  //some classes...
})
@ComponentScan(
  basePackages = {
    "health", <- this package contains the `HealthController` Component listed above
    //some packages...
  },
  excludeFilters = @ComponentScan.Filter(type = FilterType.CUSTOM, classes = some exclusions...)
)
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}
 

И тестовый класс, в котором я получаю ошибку:

 @Slf4j
@SpringBootTest(classes = Application.class, webEnvironment = RANDOM_PORT)
@ActiveProfiles(profiles = {"test1", "test2"})
public class TheFailingIT {
   //lots of tests that all fail with the specified error...
}
 

Я также внес следующие изменения test/resources/application.yaml в активацию пользовательской конечной точки (я внес те же изменения в реальный application.properties файл, и там это сработало, в тестах, к сожалению, нет).

 management:
  endpoints:
    web:
      discovery:
        enabled: false
      exposure:
        include: custom-health
      cors:
        allowed-methods: GET
        allowed-origins: "*"
      base-path: /basepath
    enabled-by-default: true
  health:
    defaults:
      enabled: false
    db:
      enabled: true
      
  endpoint:
    health:
      enabled: true
      show-details: ALWAYS
 

PS: Few changes to the class names have been made. Also i tried to comment out irrelevant stuff. If there are any further questions to clarify the current codebase feel free to ask! Thanks in advance for the help.