Panduan Cepat untuk @TestPropertySource

1. Ikhtisar

Spring menghadirkan banyak fitur untuk membantu kami menguji kode kami. Terkadang kami perlu menggunakan properti konfigurasi tertentu untuk menyiapkan skenario yang diinginkan dalam kasus pengujian kami.

Dalam situasi ini, kita dapat menggunakan anotasi @TestPropertySource . Dengan alat ini, kita dapat menentukan sumber konfigurasi yang memiliki prioritas lebih tinggi daripada sumber lain yang digunakan dalam proyek.

Karenanya, dalam tutorial singkat ini, kita akan melihat contoh di mana kita menggunakan anotasi ini. Selain itu, kami akan menganalisis perilaku default dan atribut utama yang didukungnya.

Untuk mempelajari lebih lanjut tentang pengujian di Spring Boot, kami sarankan untuk melihat tutorial 'Pengujian di Spring Boot' kami.

2. Dependensi

Cara termudah untuk menyertakan semua pustaka yang diperlukan dalam proyek kami adalah dengan menambahkan artefak spring-boot-starter-test di file pom.xml kami :

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

Kami dapat memeriksa Maven Central untuk memverifikasi bahwa kami menggunakan versi terbaru dari perpustakaan pemula.

3. Cara Menggunakan @TestPropertySource

Bayangkan kita menggunakan nilai properti 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 tingkat kelas @TestPropertySource untuk menentukan sumber konfigurasi baru dan mengganti nilai properti 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 kami menggunakan anotasi pengujian ini, kami juga akan menyertakan @ContextConfiguration untuk memuat dan mengkonfigurasi ApplicationContext untuk skenario tersebut.

Secara default, anotasi @TestPropertySource mencoba memuat file properti relatif terhadap kelas yang mendeklarasikan anotasi tersebut.

Dalam kasus ini, misalnya, jika kelas pengujian kita ada dalam paket com.baeldung.testpropertysource , maka kita memerlukan file com / baeldung / testpropertysource / DefaultTest.properties di classpath kita.

Mari tambahkan ke folder sumber daya kita lalu:

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

Selain itu, kami dapat mengubah lokasi file konfigurasi default, atau menambahkan properti tambahan yang akan memiliki prioritas lebih tinggi:

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

Akhirnya, kita dapat menentukan apakah kita ingin mewarisi lokasi dan nilai properti dari superclass atau tidak. Oleh karena itu, kita dapat beralih inheritLocations dan inheritProperties atribut, yang benar secara default.

4. Kesimpulan

Dengan contoh sederhana ini, kita telah mempelajari cara menggunakan anotasi @TestPropertySource Spring secara efektif.

Kami dapat menemukan contoh untuk berbagai skenario di repositori Github kami.