Ujian Spring Boot Mybatis Mapper Interfaces adalah langkah penting dalam memastikan kebolehpercayaan dan fungsi aplikasi anda. Sebagai pembekal penguji musim bunga, saya memahami kepentingan ujian menyeluruh dan cabaran yang dihadapi oleh pemaju ketika menguji antara muka Mybatis Mapper. Dalam catatan blog ini, saya akan berkongsi beberapa amalan dan teknik terbaik mengenai cara menguji spring boot mybatis mapper antara muka menggunakan penguji musim bunga.
Memahami antara muka mapper mybatis
Mybatis adalah kerangka kegigihan yang popular yang memudahkan akses pangkalan data dalam aplikasi Java. Antara muka Mybatis Mapper adalah antara muka Java yang menentukan kaedah SQL untuk operasi pangkalan data. Antara muka ini digunakan untuk berinteraksi dengan pangkalan data tanpa perlu menulis kod boilerplate untuk operasi JDBC.
Apabila menguji antara muka Mybatis Mapper, kita perlu memastikan bahawa pertanyaan SQL yang ditakrifkan dalam antara muka ini adalah betul dan mereka mengembalikan hasil yang diharapkan. Tester Spring menyediakan cara yang mudah untuk menguji antara muka ini dalam konteks aplikasi boot musim bunga.
Menyediakan persekitaran ujian
Sebelum kita mula menguji, kita perlu menubuhkan persekitaran ujian. Pertama, pastikan anda mempunyai kebergantungan berikut dalam andapom.xmlSekiranya anda menggunakan Maven:
<ggantency> <groupid> org.springframework.boot </groupId> <vistfactid> spring-boot-starter-test </artifactid> <scope> test </scope> </dependency> <GroupId> org.mybatis.spring.boot </GroupID> <scope-starter-starter-starter-starter-starter-starter-starter </scope> ujian </scope> </scope> </scope>
Ketergantungan ini menyediakan utiliti ujian yang diperlukan untuk Spring Boot dan Mybatis.
Menulis ujian mudah untuk antara muka mapper mybatis
Mari kita anggap kita mempunyai antara muka mapper mybatis yang mudah dinamakanUsermapperItu mempunyai kaedah untuk mencari pengguna dengan ID:
import org.apache.batis.annotations.mapper; import org.apache.batis.Annotations.Select; @Mapper public interface userMapper {@Select ("Pilih * dari pengguna di mana id = #{id}") pengguna findUserById (int id); }
Untuk menguji antara muka Mapper ini, kami boleh menulis kelas ujian menggunakan penguji musim bunga. Berikut adalah contoh:
import org.junit.jupiter.api.test; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; import statik org.junit.jupiter.api.assertions.assertnotnull; @Springboottest kelas awam USERMapperTest {@Autowired Usermapper UserMapper Private; @Test public void testFindUserById () {user user = userMapper.FindUserById (1); AssertNotNull (pengguna); }}
Dalam kelas ujian ini, kami menggunakan@SpringboottestAnotasi untuk memuatkan konteks aplikasi boot musim bunga. Kami kemudian autowireUsermapperantara muka dan tulis kaedah ujian untuk memanggilFindurbykaedah. Kami menggunakan Junit 5AssertNotnullPernyataan untuk memastikan bahawa pengguna yang dikembalikan tidak batal.
Ujian dengan pangkalan data ujian
Dalam senario dunia sebenar, kami tidak mahu menggunakan pangkalan data pengeluaran untuk ujian. Kita boleh menggunakan pangkalan data memori seperti H2 untuk ujian. Tambahkan kebergantungan berikut kepada andapom.xml:
<ggantency> <groupId> com.h2database </groupId> <vistfactid> h2 </artifactid> <scope> test </scope> </dependency>
Kemudian, konfigurasikan pangkalan data ujian di andaPermohonan-Test.propertiesFail:
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Sekarang, apabila anda menjalankan ujian, Spring Boot akan menggunakan pangkalan data memori H2 dan bukan pangkalan data pengeluaran.
Menguji pertanyaan dan urus niaga yang kompleks
Kadang -kadang, antara muka Mapper Mybatis mungkin mempunyai pertanyaan atau urus niaga yang kompleks. Sebagai contoh, antara muka Mapper mungkin mempunyai kaedah untuk memasukkan pengguna dan kemudian mengemas kini rekod lain yang berkaitan dalam urus niaga yang sama.
Mari kita anggap kita mempunyaiUsermapperdengan kaedah untuk memasukkan pengguna:


import org.apache.batis.annotations.insert; import org.apache.batis.annotations.Options; @Mapper public interface userMapper {@insert ("masukkan ke pengguna (nama, e -mel) nilai ( #{name}, #{email})") @Options (useGeneratedKeys = true, keyProperty = "id") int InsertUser (pengguna pengguna); }
Untuk menguji kaedah ini, kita boleh menulis ujian seperti berikut:
import org.junit.jupiter.api.test; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; import org.springframework.transaction.annotation.transactional; import statik org.junit.jupiter.api.assertions.asserttrue; @Springboottest @transactional kelas awam USERMapperInsertTest {@Autowired Usermapper UserMapper Private; @Test public void testInsertUser () {user user = user baru (); user.setName ("John Doe"); user.seteMail ("Johndoe@example.com"); int result = userMapper.InserTuser (pengguna); assertTrue (hasil> 0); }}
The@TransactionalAnotasi memastikan bahawa ujian berjalan dalam urus niaga, dan perubahan yang dibuat semasa ujian dilancarkan selepas ujian selesai.
Menggunakan mengejek untuk kebergantungan luaran
Dalam sesetengah kes, antara muka Mybatis Mapper mungkin bergantung kepada perkhidmatan luaran atau komponen. Sebagai contoh, kaedah Mapper boleh memanggil API luaran untuk mengesahkan beberapa data sebelum melakukan operasi pangkalan data. Dalam kes sedemikian, kita boleh menggunakan mengejek untuk mengasingkan antara muka Mapper dari kebergantungan luaran ini.
Kita boleh menggunakan Mockito, yang merupakan kerangka mengejek yang popular dalam ekosistem Java. Tambahkan kebergantungan berikut kepada andapom.xml:
</artifactid> mockito-core </artifactid> </scope> </scope> </scope> </scope> </dependency>
Berikut adalah contoh cara menggunakan Mockito untuk mengejek perkhidmatan luaran dalam ujian mapper:
import org.junit.jupiter.api.test; import org.mockito.mockito; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; import org.springframework.boot.test.mock.mockito.mockbean; import statik org.junit.jupiter.api.assertions.assertequals; @Springboottest kelas awam USERMapperWithMockTest {@Autowired Usermapper UserMapper Private; @Mockbean private externalservice externalservice; @Test public void testMapperWithMock () {mockito.when (externalService.validatedata (mockito.any ())). KemudianReturn (true); Pengguna pengguna = userMapper.finduserbyId (1); AssertEquals ("nama yang dijangkakan", user.getName ()); }}
Produk berkaitan
Sebagai pembekal penguji musim bunga, kami juga menawarkan pelbagai peralatan makmal berkualiti tinggi. Anda mungkin berminat dengan kamiPam vakum beredar air menegak,Mesin kilang koloid makmal, danReaktor Kaca Jaket 20L. Produk ini direka untuk memenuhi keperluan pelbagai penyelidikan saintifik dan aplikasi perindustrian.
Kesimpulan
Ujian Spring Boot Mybatis Mapper Interfaces adalah penting untuk memastikan kualiti dan kebolehpercayaan aplikasi anda. Dengan menggunakan Tester Spring, kita boleh dengan mudah menulis ujian untuk antara muka ini dalam konteks aplikasi boot musim bunga. Kita boleh menggunakan pangkalan data memori untuk ujian, mengendalikan urus niaga, dan menggunakan mengejek untuk mengasingkan kebergantungan luaran.
Jika anda berminat dengan produk penguji musim bunga kami atau mana -mana peralatan makmal yang berkaitan, sila hubungi kami untuk perolehan dan rundingan lanjut. Kami komited untuk memberikan anda penyelesaian terbaik untuk keperluan ujian dan penyelidikan anda.
Rujukan
- Dokumentasi Boot Spring
- Dokumentasi Mybatis
- Dokumentasi Junit 5
- Dokumentasi Mockito




