我发现版本 2.2.0.M2 出现了回归。
我有一个使用 @DataJpaTest 注释的 dao 测试,如下所示:
@DataJpaTest
@RunWith(SpringRunner.class)
@Sql(executionPhase = BEFORE_TEST_METHOD, scripts = "classpath:beforeTestDaoITest.sql")
@Sql(executionPhase = AFTER_TEST_METHOD, scripts = "classpath:afterTestDaoITest.sql")
public class TestDaoITest {
@Autowired
private TestDao underTest;
@Test
public void whenFindOne_givenExistingId_thenId() {
Optional<TestEntity> result = this.underTest.findById(1L);
assertEquals(result.get().id, (Long) 1L);
}
}
在项目中,我有一个使用@ConfigurationProperties的配置类,它看起来像这样:
@Configuration
@ConfigurationProperties(prefix = "monitoring")
public class Config {
private Long id;
@Bean
public HealthIndicator healthIndicator(HealthAggregator healthAggregator) {
HealthIndicatorRegistry healthIndicatorRegistry = new DefaultHealthIndicatorRegistry();
return new CompositeHealthIndicator(healthAggregator, healthIndicatorRegistry);
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
}
使用版本 2.1.4.RELEASE,一切正常。因为它是 DataJpaTest,所以不会扫描配置并且测试通过。
在版本 2.2.0.M2 中,扫描配置类并在测试中发生错误,因为不存在 HealthAggregator bean。我认为原因来自@ConfigurationProperties,当我删除@ConfigurationProperties注释时,不再扫描配置类
我这里有一个重现问题的工作示例:https://github.com/ebussieres/spring-boot-2.2-issue