В следующем интеграционном тесте Spring Boot не может найти правильный файл свойств и прочитать его значения:
@RunWith(SpringRunner.class)
@SpringBootTest()
@ActiveProfiles("embedded")
public class ApiApplicationTests {
@Autowired
protected Environment env;
@Test
public void contextLoads() {
}
@Test
public void verifyProperty() {
assertEquals("jdbc:h2:mem:testdb",
env.getProperty("spring.datasource.url"));
}
}
на основании его выбора файла свойств application-embedded.yml:
spring:
h2:
console:
enabled: true
liquibase:
enabled: true
change-log: classpath:db/changelog/db.changelog-master.xml
drop-first: true # should be false in prod but good for dev and test!
datasource:
url: jdbc:h2:mem:testdb
username: h2
password: h2
security:
oauth2:
resource:
filter-order: 3
signing-key: MaYzkSjmkzPC57L
security-realm: AvMaint Realm
jwt:
client-id: avmaintwebsitejwtclientid
client-secret: XY7kmzoNzl100
grant-type: password
scope-read: read
scope-write: write
resource-ids: avmaintwebsitejwtresourceid
Этот тест завершается неудачно с: "java.lang.IllegalStateException: обязательный ключ 'url' не найден".Это приложение выглядит так, будто оно видит профиль:
2018-05-20 10:42:36.810 INFO 66697 --- [ Test worker] au.com.avmaint.api.ApiApplicationTests : The following profiles are active: embedded
Похоже, что, найдя профиль, он просто идет вперед и все равно читает значения по умолчанию.
кто-нибудь знаетпочему?
Кроме того, я обнаружил, что, добавив аннотацию
@TestPropertySource("/application-embedded.yml")
, я могу заставить его использовать файл, но какой тогда смысл профилей?