【发布时间】:2021-04-30 09:14:13
【问题描述】:
我的 Spring Boot 应用程序配置了数据源,并公开了 Spring Actuator 运行状况和 prometheus 指标。
application.yml
spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
username: ${db.username}
password: ${db.password}
url: jdbc:mariadb://${db.host}:${db.port}/${db.schema}
management:
endpoints:
web:
exposure:
include: 'health, prometheus'
启动应用程序时,/actuator/prometheus 会提供包含指标的响应。现在我想为prometheus 端点编写一个非常基本的测试(JUnit 5)。目前是这样的:
测试类
@SpringBootTest
@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
public class HealthMetricsIT {
@Autowired
private MockMvc mockMvc;
@Test
public void shouldProvideHealthMetric() throws Exception {
mockMvc.perform(get("/actuator/prometheus")).andExpect(status().isOk());
}
}
但是我在这里遇到了两个问题,我还不知道如何解决它们。
问题 1
- 使用此设置,测试似乎会启动整个应用程序,从而尝试连接到正在运行的数据库。
- 由于未提供以
db为前缀的数据源属性,因此无法正常启动测试。
如何在不启动数据库连接的情况下开始此测试?
问题 2
即使我的本地数据库正在运行并且我提供了所有db 属性,测试也会失败。这次是因为我得到的是 HTTP 404 而不是 200。
【问题讨论】:
标签: spring spring-boot spring-boot-test