ฉันมีแอปพลิเคชัน Spring-Boot ซึ่งคุณสมบัติเริ่มต้นถูกตั้งค่าในapplication.properties
ไฟล์ใน classpath (src / main / resources / application.properties)
ฉันต้องการแทนที่การตั้งค่าเริ่มต้นบางอย่างในการทดสอบ JUnit ด้วยคุณสมบัติที่ประกาศในtest.properties
ไฟล์ (src / test / resources / test.properties)
ฉันปกติมีชั้นเรียนเฉพาะสำหรับการทดสอบ Junit ของฉันเช่น
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 {
}
ฉันแรกคิดว่าการใช้@PropertySource("classpath:test.properties")
ในคลาส TestConfig จะทำเคล็ดลับ แต่คุณสมบัติเหล่านี้จะไม่เขียนทับการตั้งค่า application.properties (ดูเอกสารอ้างอิง Spring-Boot เอกสารอ้างอิง - 23. การกำหนดค่าภายนอก )
จากนั้นฉันพยายามใช้-Dspring.config.location=classpath:test.properties
เมื่อเรียกใช้การทดสอบ ประสบความสำเร็จ - แต่ฉันไม่ต้องการตั้งค่าคุณสมบัติระบบนี้สำหรับการทดสอบแต่ละครั้ง ดังนั้นฉันใส่ไว้ในรหัส
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
ซึ่งน่าเสียดายที่ไม่ประสบความสำเร็จอีกครั้ง
จะต้องมีวิธีง่ายๆในการแทนที่application.properties
การตั้งค่าในการทดสอบ JUnit โดยtest.properties
ที่ฉันต้องมองข้าม