A Spring Boot Mybatis Mapper interfészek tesztelése kulcsfontosságú lépés az alkalmazás megbízhatóságának és funkcionalitásának biztosításában. Tavaszi tesztelő beszállítójaként megértem az alapos tesztelés jelentőségét és a fejlesztőknek a Mybatis Mapper interfészek tesztelésekor. Ebben a blogbejegyzésben megosztom néhány bevált gyakorlatot és technikát arról, hogyan lehet hatékonyan tesztelni a Spring Boot Mybatis Mapper interfészeket a Spring Tester segítségével.
A Mybatis Mapper interfészek megértése
A Mybatis egy népszerű perzisztencia keret, amely egyszerűsíti az adatbázis -hozzáférést a Java alkalmazásokban. A Mybatis Mapper interfészek olyan Java interfészek, amelyek meghatározzák az adatbázis -műveletek SQL módszereit. Ezeket az interfészeket arra használják, hogy kölcsönhatásba lépjenek az adatbázissal anélkül, hogy kazánlap kódot kellene írni a JDBC műveletekhez.
A Mybatis Mapper interfészek tesztelésekor gondoskodnunk kell arról, hogy az ezekben az interfészekben meghatározott SQL lekérdezések helyesek legyenek, és visszatérjenek a várt eredményekhez. A Spring Tester kényelmes módszert kínál ezen interfészek tesztelésére a Spring Boot alkalmazás kontextusában.
A tesztelési környezet beállítása
Mielőtt megkezdenénk a tesztelést, be kell állítanunk a tesztelési környezetet. Először győződjön meg róla, hogy a következő függőségek vannak -e apom.xmlHa Maven -t használ:
<függőség> <groupId> org.springframework.boot </groupID> <stifactId> rugó-indító-teszt </stifactId> <Scope> teszt </cope> </függőség> <függőség> <groupid> org.mybatis.spring.boot </grouptId> <artifactId> myBatis-pring-starmy-starmy-starper-se <Scope> Teszt </cope> </fependency>
Ezek a függőségek biztosítják a Spring Boot és a Mybatis szükséges tesztelési segédprogramjait.
Egy egyszerű teszt írása egy Mybatis Mapper interfészhez
Tegyük fel, hogy van egy egyszerű Mybatis Mapper interfészünkFelhasználóEnnek van egy módszere, hogy a felhasználót azonosítóval keresse meg:
import org.apache.ibatis.annotations.mapper; import org.apache.ibatis.annotations.Select; @Mapper public interfész usermapper {@Select ("válassza * a felhasználóktól, ahol id = #{id}") FindUserById (int id) felhasználói; }
A Mapper interfész teszteléséhez tesztosztályt írhatunk a Spring Tester segítségével. Íme egy példa:
import org.junit.jupiter.api.test; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; Import statikus org.junit.jupiter.api.assertions.assertNotnull; @SpringBoOttest nyilvános osztályú USERMAPPertest {@AutOWIRED privát Usermapper Usermapper; @Test public void testfinduserById () {user user = usermapper.finduserById (1); assertNotnull (felhasználó); }}
Ebben a tesztosztályban a@Springboottestkommentár a tavaszi indító alkalmazás kontextusának betöltéséhez. Ezután automatizáljuk aFelhasználóinterfész és írjon egy teszt módszert aFindurbymódszer. A junit 5 -et használjukassertnotnullállítás annak biztosítása érdekében, hogy a visszaküldött felhasználó ne legyen nulla.
Tesztelés teszt adatbázissal
Egy valós világ forgatókönyvében nem akarjuk használni a termelési adatbázist a teszteléshez. Használhatunk egy in - memória adatbázist, például a H2 -t a teszteléshez. Adja hozzá a következő függőségetpom.xml:
<függőség> <groupID> com.h2database </groupID> <sartifactId> h2 </stifactId> <cope> teszt </cope> </ffeendency>
Ezután konfigurálja a teszt -adatbázist aAlkalmazás-teszt.PropertiesFájl:
Spring.DataSource.URL = JDBC: H2: MEM: TestDB Spring.DataSource.DriverClassName = org.h2.driver Spring.DataSource.USERNAME = SA Spring.DataSource.password = jelszó tavaszi.jpa.database-platform = org.HiBernate.Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.H2Dialect.h2Dialect.h2dialect.h2dialect.h2dialect.h2dialect.
Most, amikor a teszteket futtatja, a Spring Boot a H2 in - memória adatbázist fogja használni a termelési adatbázis helyett.
Komplex lekérdezések és tranzakciók tesztelése
Időnként a Mybatis Mapper interfészek komplex lekérdezéseket vagy tranzakciókat tartalmazhatnak. Például egy Mapper interfésznek lehet egy módszer a felhasználó beillesztésére, majd egy másik kapcsolódó rekord frissítésére ugyanabba a tranzakcióba.
Tegyük fel, hogy van egyFelhasználóA felhasználó beillesztésére szolgáló módszerrel:


import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.options; @Mapper public interfész usermapper {@insert ("beillesztés a felhasználókba (név, e -mail) értékek ( #{name}, #{e -mail})") @options (useGeneratedKeys = true, keyproperty = "id") int InsertUser (felhasználói felhasználó); }
Ennek a módszernek a teszteléséhez tesztet írhatunk az alábbiak szerint:
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 statikus org.junit.jupiter.api.assertions.assertTrue; @SpringBoOttest @Transactional nyilvános osztályú usermapperInsertTest {@AutOWired privát Usermapper Usermapper; @Test public void testInsertUser () {user user = new user (); user.setName ("John Doe"); user.setemail ("Johndoe@example.com"); int eredmény = usermapper.InsertUser (felhasználó); assertTrue (eredmény> 0); }}
A@TransactionalA kommentár biztosítja, hogy a teszt egy tranzakción belül futjon, és a teszt során végrehajtott változásokat a teszt befejezése után visszahúzzák.
Gúnyolás használata külső függőségekhez
Bizonyos esetekben a Mybatis Mapper interfész függhet a külső szolgáltatásoktól vagy alkatrészektől. Például egy Mapper módszer hívhat egy külső API -t, hogy bizonyos adatot validáljon az adatbázis -művelet végrehajtása előtt. Ilyen esetekben gúnyolódást használhatunk a Mapper interfész elkülönítésére ezekből a külső függőségekből.
Használhatjuk a Mockito -t, amely a Java ökoszisztéma népszerű gúnyolódási kerete. Adja hozzá a következő függőségetpom.xml:
<függőség> <groupId> org.mockito </groupID> <rtifactId> mockito-core </rtifactId> <cope> teszt </cope> </függőség>
Íme egy példa arra, hogyan lehet a Mockito -t használni egy külső szolgáltatás gúnyolására Mapper tesztben:
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 statikus org.junit.jupiter.api.assertions.assertequals; @SpringBoOttest nyilvános osztályú usermapperWithMockTest {@AutOWIRED privát Usermapper Usermapper; @Mockbean magán externalservice externalservice; @Test Public void TestMapperWithMock () {mockito.when (exteralservice.validateData (mockito.any ()). MajdReturn (true); Felhasználói felhasználó = usermapper.finduserById (1); assertequals ("várt név", user.getName ()); }}
Kapcsolódó termékek
Tavaszi tesztelő beszállítójaként számos magas színvonalú laboratóriumi berendezést kínálunk. Lehet, hogy érdekel a miFüggőleges víz keringő vákuumszivattyú,Laboratóriumi kolloid malomgép, és20 literes kabátos üvegreaktor- Ezeket a termékeket úgy tervezték, hogy megfeleljenek a különféle tudományos kutatások és ipari alkalmazások igényeinek.
Következtetés
A Spring Boot Mybatis Mapper interfészek tesztelése elengedhetetlen az alkalmazás minőségének és megbízhatóságának biztosításához. A Spring Tester használatával könnyen megírhatunk teszteket ezekre az interfészekre a Spring Boot alkalmazás kontextusában. Használhatjuk a memória adatbázisokat a teszteléshez, a tranzakciók kezeléséhez és a gúnyolás felhasználásához a külső függőségek izolálására.
Ha érdekli a tavaszi teszter termékeink vagy a kapcsolódó laboratóriumi berendezések, kérjük, vegye fel velünk a kapcsolatot a további beszerzések és tárgyalásokért. Elkötelezettek vagyunk azért, hogy a legjobb megoldásokat kínáljuk Önnek a tesztelési és kutatási igényekhez.
Referenciák
- Tavaszi rendszerindító dokumentáció
- Mybatis dokumentáció
- Junit 5 dokumentáció
- Mockito dokumentáció




