Tôi có một ứng dụng Spring-Boot trong đó các thuộc tính mặc định được đặt trong một application.properties
tệp trong đường dẫn lớp (src / main / resource / application.properies).
Tôi muốn ghi đè một số cài đặt mặc định trong thử nghiệm JUnit của mình với các thuộc tính được khai báo trong một test.properties
tệp (src / test / resource / test.properies)
Tôi thường có Lớp Cấu hình dành riêng cho Bài kiểm tra Junit của mình, ví dụ:
package foo.bar.test;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
}
Trước tiên tôi nghĩ rằng việc sử dụng @PropertySource("classpath:test.properties")
trong lớp TestConfig sẽ thực hiện thủ thuật, nhưng các thuộc tính này sẽ không ghi đè cài đặt application.properations (xem Tài liệu tham khảo khởi động mùa xuân - 23. Cấu hình ngoài ).
Sau đó, tôi đã cố gắng sử dụng -Dspring.config.location=classpath:test.properties
khi gọi thử nghiệm. Điều đó đã thành công - nhưng tôi không muốn đặt thuộc tính hệ thống này cho mỗi lần thực hiện kiểm tra. Vì vậy, tôi đặt nó trong mã
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
điều không may lại một lần nữa không thành công.
Phải có một giải pháp đơn giản về cách ghi đè application.properties
cài đặt trong các bài kiểm tra JUnit test.properties
mà tôi phải bỏ qua.