Tôi có một số lớp được chú thích với @RestController
mà tôi đang cố gắng kiểm tra bằng cách sử dụng lớp MockMvc
. Các kết cục được đáp ứng hoàn toàn khỏi một ứng dụng web, nhưng tôi nhận được lỗi sau khi chạy các bài kiểm tra (từ IntelliJ IDEA):Kiểm tra tích hợp Khởi động mùa xuân không thể truy cập tệp application.properties
java.lang.IllegalArgumentException: Could not resolve placeholder
'spring.data.rest.base-path' in string value "${spring.data.rest.base-path}/whatever"
Đây là cách các tập tin application.properties
trông giống như:
spring.data.rest.base-path=/api
spring.profiles.active=dev
...
Tôi cũng có một tệp có tên là application-dev.properties
với các thuộc tính bổ sung (khác).
Đây là cách các lớp kiểm tra được chú thích:
@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 {
...
}
Mặt khác, đây là cách điều khiển còn lại là thực hiện (trong đó tài sản có vấn đề đang được sử dụng):
@RestController
@RequestMapping("${spring.data.rest.base-path}/whatever")
public class MyRestController {
...
}
Đây là cách lớp học chính của ứng dụng trông giống như:
@SpringBootApplication(scanBasePackages = {...})
@EnableJpaRepositories({...})
@EntityScan({...})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Và cuối cùng, đây là (một tập hợp con của) cấu trúc của dự án:
my-project
|_ src
|_ java
| |_ com.example.x
| |_ controller
| |_ MyRestController.java
|
|_ test
| |_ com.example.x
| |_ controller
| |_ MyRestControllerTest.java
|
|_ resources
|_ application.properties
|_ application-dev.properties
Tôi đã tìm thấy một số giải pháp cho vấn đề trên toàn bộ web, nhưng không có giải pháp nào phù hợp với tôi.
tôi không thấy nơi bạn đã sử dụng thuộc tính này – Jaiwo99
Rất tiếc, bạn đúng Tôi không làm rõ điều đó. Nó đang được sử dụng trong các bộ điều khiển REST để xác định đường dẫn cơ sở cho tất cả các điểm cuối. Có tài sản đang làm tốt - như tôi đã đề cập, tôi có thể truy cập chúng từ trình duyệt như mong đợi.Nơi duy nhất nó không thể đọc được là các bài kiểm tra. – DanielM
Có vẻ như Intellij không nhận ra/tài nguyên là thư mục tài nguyên. Hãy thử @PropertySource ('file: /path/to/application.properties') –