У меня есть несколько классов, аннотированных @RestController
, которые я пытаюсь проверить, используя класс MockMvc
. Конечные точки отвечают должным образом из веб-приложения, но я получаю следующее сообщение об ошибке при выполнении тестов (от IntelliJ IDEA):Тесты интеграции Spring Boot не могут достичь файла application.properties
java.lang.IllegalArgumentException: Could not resolve placeholder
'spring.data.rest.base-path' in string value "${spring.data.rest.base-path}/whatever"
Это, как выглядит файл application.properties
как:
spring.data.rest.base-path=/api
spring.profiles.active=dev
...
У меня также есть файл с именем application-dev.properties
с дополнительными (разными) свойствами.
Это как прокомментированы тестовые классы:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebIntegrationTest // Also tried: @WebAppConfiguration
@ActiveProfiles("dev")
// Also tried: @PropertySource("classpath:application.properties")
// Also tried: @TestPropertySource("classpath:application.properties")
public class MyRestControllerTest {
...
}
С другой стороны, это как контроллеры REST реализуются (где проблематична свойство используется):
@RestController
@RequestMapping("${spring.data.rest.base-path}/whatever")
public class MyRestController {
...
}
Вот как выглядит основной класс приложения:
@SpringBootApplication(scanBasePackages = {...})
@EnableJpaRepositories({...})
@EntityScan({...})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
И, наконец, это (подмножество) Структура проекта:
my-project
|_ src
|_ java
| |_ com.example.x
| |_ controller
| |_ MyRestController.java
|
|_ test
| |_ com.example.x
| |_ controller
| |_ MyRestControllerTest.java
|
|_ resources
|_ application.properties
|_ application-dev.properties
Я нашел несколько решений проблемы по всей сети, но ни один из них, казалось, не работать для меня.
Я не видел, где вы использовали это свойство – Jaiwo99
Извините, что вы правы Я не уточнил, что. Он используется в контроллерах REST для определения базового пути для всех конечных точек. Там свойство прекрасно работает - как я уже упоминал, я могу получить к ним доступ из браузера, как и ожидалось.Это те места, где невозможно прочитать. – DanielM
Кажется, Intellij не распознал/ресурсы как папку ресурсов. Попробуйте @PropertySource ('файл: /path/to/application.properties') –