Saya memiliki aplikasi Spring-Boot di mana properti default diatur dalam application.properties
file di classpath (src / main / resources / application.properties).
Saya ingin mengganti beberapa pengaturan default dalam uji JUnit saya dengan properti yang dideklarasikan dalam test.properties
file (src / test / resources / test.properties)
Saya biasanya memiliki Kelas Konfigurasi khusus untuk Tes Junit saya, misalnya
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 {
}
Saya pertama kali berpikir bahwa menggunakan @PropertySource("classpath:test.properties")
di kelas TestConfig akan melakukan trik, tetapi properti ini tidak akan menimpa pengaturan application.properties (lihat Spring-Boot Reference Doc - 23. Konfigurasi Eksternalisasi ).
Kemudian saya mencoba menggunakan -Dspring.config.location=classpath:test.properties
ketika menjalankan tes. Itu berhasil - tetapi saya tidak ingin mengatur properti sistem ini untuk setiap eksekusi tes. Jadi saya memasukkannya ke dalam kode
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
yang sayangnya sekali lagi tidak berhasil.
Pasti ada solusi sederhana tentang cara mengesampingkan application.properties
pengaturan dalam tes JUnit dengan test.properties
yang harus saya abaikan.