Panduan Pantas ke @TestPropertySource

1. Gambaran keseluruhan

Spring membawa banyak ciri untuk membantu kami menguji kod kami. Kadang-kadang kita perlu menggunakan sifat konfigurasi tertentu untuk mengatur senario yang diinginkan dalam kes ujian kita.

Dalam situasi seperti ini, kita dapat memanfaatkan anotasi @TestPropertySource . Dengan alat ini, kita dapat menentukan sumber konfigurasi yang mempunyai keutamaan yang lebih tinggi daripada sumber lain yang digunakan dalam projek.

Oleh itu, dalam tutorial ringkas ini, kita akan melihat contoh di mana kita menggunakan anotasi ini. Juga, kami akan menganalisis tingkah laku lalai dan atribut utama yang disokongnya.

Untuk mengetahui lebih lanjut mengenai pengujian di Spring Boot, kami sarankan untuk melihat tutorial 'Testing in Spring Boot' kami.

2. Kebergantungan

Kaedah termudah untuk memasukkan semua perpustakaan yang diperlukan dalam projek kami adalah dengan menambahkan artifak spring-boot-starter-test dalam fail pom.xml kami :

 org.springframework.boot spring-boot-starter-test test 2.0.5.RELEASE 

Kami boleh memeriksa Maven Central untuk mengesahkan bahawa kami menggunakan versi terbaru perpustakaan pemula.

3. Cara Menggunakan @TestPropertySource

Cuba bayangkan kita menggunakan nilai harta tanah dengan memasukkannya menggunakan anotasi @Value Spring:

@Component public class ClassUsingProperty { @Value("${baeldung.testpropertysource.one}") private String propertyOne; public String retrievePropertyOne() { return propertyOne; } }

Kami kemudian akan menggunakan anotasi peringkat kelas @TestPropertySource untuk menentukan sumber konfigurasi baru dan mengatasi nilai harta itu:

@RunWith(SpringRunner.class) @ContextConfiguration(classes = ClassUsingProperty.class) @TestPropertySource public class DefaultTest { @Autowired ClassUsingProperty classUsingProperty; @Test public void givenDefaultTPS_whenVariableRetrieved_thenDefaultFileReturned() { String output = classUsingProperty.retrievePropertyOne(); assertThat(output).isEqualTo("default-value"); } }

Biasanya, setiap kali kita menggunakan anotasi ujian ini, kita juga akan memasukkan @ContextConfiguration satu sehingga memuat dan mengkonfigurasi ApplicationContext untuk senario tersebut.

Secara lalai, anotasi @TestPropertySource cuba memuatkan fail sifat berbanding dengan kelas yang menyatakan anotasi tersebut.

Dalam kes ini, sebagai contoh, jika kelas ujian kami terdapat dalam pakej com.baeldung.testpropertysource , maka kami memerlukan fail com / baeldung / testpropertysource / DefaultTest.properties di classpath kami.

Mari tambahkan ke folder sumber kami kemudian:

# DefaultTest.properties baeldung.testpropertysource.one=default-value

Selain itu, kita dapat mengubah lokasi fail konfigurasi lalai, atau menambahkan sifat tambahan yang akan lebih mendahului:

@TestPropertySource(locations = "/other-location.properties", properties = "baeldung.testpropertysource.one=other-property-value")

Akhirnya, kita dapat menentukan sama ada kita mahu mewarisi nilai lokasi dan harta tanah dari cermin mata hitam atau tidak. Oleh itu, kita boleh bertukar-tukar inheritLocations dan inheritProperties sifat-sifat, yang benar secara lalai.

4. Kesimpulan

Dengan contoh ringkas ini, kami telah belajar bagaimana menggunakan anotasi @TestPropertySource Spring dengan berkesan.

Kami dapat mencari contoh untuk pelbagai senario di repositori Github kami.