Menguji aliran Integrasi Pegas adalah aspek penting dalam mengembangkan aplikasi yang kuat dan andal. Sebagai pemasok Spring Tester, saya memahami tantangan yang dihadapi pengembang dalam memastikan kelancaran pengoperasian komponen Integrasi Spring mereka. Dalam postingan blog ini, saya akan membagikan beberapa strategi efektif dan praktik terbaik untuk menguji aliran Integrasi Musim Semi menggunakan Spring Tester.
Memahami Arus Integrasi Musim Semi
Spring Integration menyediakan model pemrograman untuk membangun solusi integrasi perusahaan. Hal ini memungkinkan pengembang untuk menghubungkan berbagai komponen, seperti sistem pesan, database, dan layanan web, menggunakan berbagai saluran dan titik akhir. Aliran Integrasi Pegas adalah rangkaian komponen yang saling berhubungan yang memproses pesan dalam urutan tertentu.
Menguji aliran ini penting untuk memverifikasi bahwa aliran tersebut berperilaku sesuai yang diharapkan dan menangani berbagai skenario dengan benar. Spring Tester adalah alat canggih yang menyederhanakan proses pengujian dengan menyediakan serangkaian utilitas dan anotasi untuk membuat pengujian unit dan integrasi untuk aplikasi Integrasi Spring.
Menyiapkan Lingkungan Pengujian
Sebelum terjun ke pengujian, Anda perlu menyiapkan lingkungan pengujian Anda. Pertama, pastikan Anda memiliki dependensi yang diperlukan dalam proyek Anda. Anda memerlukan Integrasi Pegas dan Penguji Pegas di perangkat Andapom.xmljika Anda menggunakan Maven:
<dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-core</artifactId> <version>5.5.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-integration</artifactId> <version>2.6.7</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.7</version> <scope>test</scope> </dependency>
Setelah Anda memiliki dependensi, Anda dapat mulai menulis pengujian Anda.
Aliran Integrasi Pegas Pengujian Unit
Pengujian unit adalah langkah pertama dalam menguji aliran Integrasi Musim Semi. Ini memungkinkan Anda menguji masing-masing komponen secara terpisah. Spring Tester menyediakan beberapa anotasi dan utilitas untuk menyederhanakan pengujian unit.
Menggunakan@SpringIntegrationTest
Itu@SpringIntegrationTestanotasi adalah alat yang ampuh untuk menguji unit aliran Integrasi Pegas. Ini memungkinkan konfigurasi otomatis infrastruktur pengujian Integrasi Musim Semi.
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.test.context.SpringIntegrationTest; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; @SpringBootTest @SpringIntegrationTest kelas publik MyIntegrationFlowUnitTest { @Autowired private QueueChannel outputChannel; @Test public void testIntegrationFlow() { // Buat pesan Pesan<String> pesan = new GenericMessage<>("Uji pesan"); // Mengirim pesan ke saluran masukan aliran Anda (tidak ditampilkan di sini) // Menerima pesan dari saluran keluaran Pesan<?> diterimaMessage = outputChannel.receive(1000); tegaskan pesan yang diterima!= null; } }
Dalam contoh ini, kami menggunakanSaluran Antrianuntuk mengirim dan menerima pesan. Itumenerimametode menunggu pesan tiba dalam batas waktu yang ditentukan (dalam hal ini 1000 milidetik).


Pengujian Transformer dan Filter
Transformator dan filter adalah komponen umum dalam aliran Integrasi Pegas. Anda dapat mengujinya satu per satu untuk memastikannya berfungsi sesuai harapan.
import org.junit.jupiter.api.Test; import org.springframework.integration.transformer.GenericTransformer; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import static org.junit.jupiter.api.Assertions.assertEquals; public class TransformerTest { @Test public void testTransformer() { GenericTransformer<String, String> transformator = s -> s.toUpperCase(); Pesan<String> inputMessage = GenericMessage baru<>("test"); Hasil string = transformator.transform(inputMessage.getPayload()); menegaskanEquals("UJI",hasil); } }
Pengujian Integrasi Arus Integrasi Pegas
Meskipun pengujian unit sangat bagus untuk menguji masing-masing komponen, pengujian integrasi diperlukan untuk menguji interaksi antara berbagai komponen dalam aliran.
Menggunakan@DirtiesContext
Saat melakukan pengujian integrasi, Anda mungkin perlu menyetel ulang konteks aplikasi Spring di antara pengujian. Itu@DirtiesContextanotasi dapat digunakan untuk mencapai hal ini.
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.test.context.SpringIntegrationTest; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import org.springframework.test.annotation.DirtiesContext; @SpringBootTest @SpringIntegrationTest @DirtiesContext kelas publik MyIntegrationFlowIntegrationTest { @Autowired private QueueChannel outputChannel; @Test public void testFullIntegrationFlow() { // Mirip dengan pengujian unit, tetapi sekarang menguji keseluruhan aliran Message<String> message = new GenericMessage<>("Test integrasi message"); // Kirim pesan ke saluran masukan aliran (tidak ditampilkan) Pesan<?> terimaPesan = outputChannel.receive(1000); tegaskan pesan yang diterima!= null; } }
Menguji dengan Titik Akhir Mock
Titik akhir tiruan berguna untuk mensimulasikan sistem atau komponen eksternal dalam pengujian integrasi Anda. Spring Tester menyediakan aIntegrasi Tiruankelas untuk membuat titik akhir tiruan.
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; import org.springframework.integration.test.context.SpringIntegrationTest; import org.springframework.integration.test.mock.MockIntegration; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import static org.junit.jupiter.api.Assertions.assertEquals; @SpringBootTest @SpringIntegrationTest kelas publik MockEndpointTest { @Autowired private SourcePollingChannelAdapter sourceAdapter; @Test public void testWithMockEndpoint() { MockIntegration.mockMessageSource(sourceAdapter, new GenericMessage<>("Pesan tiruan")); // Sekarang adaptor sumber akan mengirimkan pesan tiruan // Anda dapat melanjutkan pengujian sisa aliran // ...assertEquals("Pesan tiruan", "Pesan tiruan"); } }
Pengujian dengan Sistem Eksternal
Dalam beberapa kasus, Anda mungkin perlu menguji alur Integrasi Musim Semi Anda dengan sistem eksternal, seperti database atau broker pengiriman pesan. Spring Tester memberikan dukungan untuk pengujian dengan sistem eksternal ini.
Pengujian dengan Database
Jika aliran Integrasi Musim Semi Anda berinteraksi dengan database, Anda dapat menggunakan database dalam memori seperti H2 untuk pengujian.
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.test.context.SpringIntegrationTest; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; impor javax.sql.DataSource; @SpringBootTest @SpringIntegrationTest @AutoConfigureTestDatabase kelas publik DatabaseIntegrationTest { @Autowired private DataSource dataSource; @Saluran Keluaran Saluran Antrean pribadi yang diautokabel; @Test public void testDatabaseIntegration() { // Buat pesan yang akan memicu operasi database dalam alur Message<String> message = new GenericMessage<>("Insert data"); // Kirim pesan ke saluran masukan aliran (tidak ditampilkan) Pesan<?> terimaPesan = outputChannel.receive(1000); tegaskan pesan yang diterima!= null; } }
Sumber Daya Tambahan untuk Pengujian
Saat menguji aliran Integrasi Pegas, penting untuk memiliki alat dan perlengkapan yang tepat. Misalnya, jika Anda sedang mengerjakan aplikasi terkait bahan kimia yang berinteraksi dengan sistem eksternal, Anda mungkin tertarik padaReaktor Filter Kristalisasi Berjaket Kaca,Reaktor Kaca Berjaket 20L, atauPemandian Minyak Suhu Tinggi 50L. Sumber daya ini dapat meningkatkan akurasi dan keandalan proses pengujian Anda.
Kesimpulan
Menguji aliran Integrasi Pegas adalah tugas yang kompleks namun penting. Dengan menggunakan Spring Tester, Anda dapat menyederhanakan proses pengujian dan memastikan kualitas aplikasi Integrasi Spring Anda. Baik Anda melakukan pengujian unit atau pengujian integrasi, Spring Tester menyediakan serangkaian alat dan anotasi yang kaya untuk membantu Anda mencapai tujuan pengujian Anda.
Jika Anda tertarik untuk membeli produk Spring Tester kami atau memiliki pertanyaan tentang pengujian aliran Integrasi Spring, jangan ragu untuk menghubungi kami untuk diskusi pengadaan. Kami di sini untuk membantu Anda membangun aplikasi yang lebih andal dan efisien.
Referensi
- Dokumentasi Integrasi Musim Semi
- Panduan Pengujian Boot Musim Semi
- Dokumentasi JUnit 5




