Ispitivanje proljetnog pokretanja MyBatis mapper sučelja je ključni korak u osiguravanju pouzdanosti i funkcionalnosti vaše aplikacije. Kao dobavljač proljetnog ispitivača, razumijem značaj temeljnog testiranja i izazova koji su se suočavaju s programerima kada je u pitanju testiranje MyBatis mapper sučelja. U ovom blogu podijelit ću neke najbolje prakse i tehnike o tome kako efikasno testirati proljetne čizme mybatis mapper sučelja pomoću proljetnog testera.
Razumijevanje MyBatis mapper sučelja
Mybatis je popularan uporišćeni okvir koji pojednostavljuje pristup bazi podataka u Java aplikacijama. MyBatis Mapper sučelja su Java sučelja koja definiraju SQL metode za operacije baze podataka. Ova sučelja koriste se za interakciju s bazom podataka bez potrebe za pisanje kotlovije za kotl za JDBC operacije.
Prilikom testiranja mybatis mapper sučelja moramo osigurati da su SQL upiti definirani u tim sučeljima tačni i da vrate očekivane rezultate. Proljetni tester pruža pogodan način testiranja ovih sučelja u kontekstu aplikacije za pokretanje opruge.
Postavljanje okruženja za testiranje
Prije nego što počnemo testirati, moramo postaviti okruženje za testiranje. Prvo, obavezno imate sljedeće ovisnosti u svompom.xmlAko koristite Maven:
<Ovisnost> <Groupid> Org.springFramework.boot </ grouptid> Storm-boot-test </ Artifactid> </ opseg> </ ovisnosti> </ groupnid> Org.mybatis.spring.Boot </ grouptiid> <artifactid-boot-pokretač-test </ artifactid> <Opseg> Test </ opseg> </ ovisnost>
Ove ovisnosti pružaju potrebne komunalne usluge za proljeće čizme i mybatis.
Pisanje jednostavnog testa za MyBatis mapper sučelje
Pretpostavimo da imamo jednostavan MyBatis mapper sučelje nazvanaUsermapperTo ima metodu za pronalaženje korisnika po ID-u:
uvozi org.apache.ibatis.annotacije.mapper; uvozi org.apache.ibatis.annotations.Ilect; @Mapper javno sučelje usermapper {elect ("Select * od korisnika gdje je id = # {id}") FinduserByid (Int ID); }
Da biste testirali ovu mapper sučelje, možemo napisati testnu klasu pomoću proljetnog ispitivača. Evo primjera:
uvoz org.junit.jupiter.api.test; uvoziti org.springframework.beans.Factory.annotation.autokowired; uvoziti org.springframework.boot.test.context.springboottest; uvoz statički org.junit.jupiter.api.assertys.assertnotnull; @Springboottest Javna klasa Usermappertest {@Autowired privatni usermapper usermapper; @Test javno void testfinduserbyid () {Korisnik korisnika = usirnjapper.finduserbyid (1); assertnotnull (korisnik); }}
U ovoj testnoj klasi koristimo@SpringboottestNapomena za učitavanje konteksta primjene proljetnog pokretanja. Zatim automodireUsermappersučelje i napišite metodu ispitivanja za pozivFinderbyMetoda. Koristimo JUNIT 5assertnotnulltvrdnja da se osigura da vraćeni korisnik nije null.
Ispitivanje sa testnom bazom podataka
U stvarnom - svjetskom scenariju, ne želimo koristiti proizvodnu bazu podataka za testiranje. Možemo koristiti bazu podataka u memoriji kao H2 za testiranje. Dodajte sljedeću ovisnostpom.xml:
<ovisnost> <GroupID> Com.h2database </ groupid> <Artifactid> H2 </ artifactid> <opseg> test </ opseg> </ ovisnost>
Zatim konfigurirajte testnu bazu podataka u svomaplikacija-Test.PropertiesDatoteka:
Spring.Datasource.url = JDBC: H2: MemDB proljeće.Datasource.DreiverclassName = org.h2.drivers.datasource.username = sa proljeće.datasource.password = Lozinka Spring.JPA.DATABASE.Dilect.h2Dilect.Dilect.h2Dilect
Sada, kada pokrenete testove, proljetna čizma će koristiti H2 u memorijskoj bazi podataka umjesto proizvodne baze podataka.
Ispitivanje složenih upita i transakcija
Ponekad MyBatis mapper sučelja mogu imati složene upite ili transakcije. Na primjer, mapper sučelje može imati metodu za umetanje korisnika, a zatim ažurirati još jedan srodni zapis u istoj transakciji.
Pretpostavimo da imamoUsermapperSa metodom za umetanje korisnika:


uvoz org.aphe.ibatis.annotations.insert; uvoz org.aphe.ibatis.annotacije.options; @Mapper Javno sučelje Usermapper {@ @Sinsert ("Umetnite u korisnike (naziv, e-poštu) vrijednosti (# {Ime}, # {e-mail})") @options (USEGeneratedKeys = TRUE, KeyProperty = "ID") INT UNESUSER (Korisnik korisnika); }
Da biste testirali ovu metodu, možemo napisati test na sljedeći način:
uvoz org.junit.jupiter.api.test; uvoziti org.springframework.beans.Factory.annotation.autokowired; uvoziti org.springframework.boot.test.context.springboottest; uvoz org.springframework.transaction.annotation.tranSaksikol; uvoz statičkog org.junit.jupiter.api.asserts.asserttrue; @Springboottest @tranSaksična javna klasa UsermapperinsertTest {@Autowired privatni usermapper usermapper; @Test javno void testisertuser () {Korisnik korisnika = novi korisnik (); Korisnik.SeteName ("John Doe"); user.setemail ("johndoe@example.com"); Int Rezultat = UserMapper.insertuser (korisnik); AssertTrue (rezultat> 0); }}
The@TranSaksialNapomena osigurava da test radi unutar transakcije, a promjene izvršene tijekom testa su valjane nakon završetka testa.
Korištenje podružnog za vanjske zavisnosti
U nekim slučajevima MyBatis mapper sučelje može ovisiti o vanjskim uslugama ili komponentama. Na primjer, maparska metoda može nazvati vanjski API za provjeru nekih podataka prije izvođenja operacije baze podataka. U takvim slučajevima možemo koristiti podrugljenje da izoliramo mapper sučelje iz ovih vanjskih ovisnosti.
Možemo se koristiti podrugljivo, što je popularan podrugljiv okvir u Java ekosustavu. Dodajte sljedeću ovisnostpom.xml:
<Ovisnost> <Groupid> Org.Mockito </ groupid> <Artifactid> Mockito-core </ artifactid> <opseg> test </ opseg> </ ovisnost>
Evo primjera kako koristiti podsmijesi za ruganje vanjske usluge u testu mapara:
uvoz org.junit.jupiter.api.test; uvoz org.mockito.mockito; uvoziti org.springframework.beans.Factory.annotation.autokowired; uvoziti org.springframework.boot.test.context.springboottest; uvozi org.springframework.boot.test.mock.mockito.mockbean; uvoz statički org.junit.jupiter.api.assertions.assertequals; @Springboottest Javna klasa UsermapperwithMockTest {@Autowired privatni usermapper usermapper; @MockBean privatni eksternservice externalService; @Test javno void testmapperwithmock () {mocchoto.when (vanjskiervice.valiliteteata (mocketo.any ())). Tadareturn (istina); Korisnik korisnika = usirnjapper.finduserbyid (1); ARESERTEQUALS ("Očekivano ime", user.getname ()); }}
Srodni proizvodi
Kao dobavljač proljetnog ispitivača nudimo i niz visoke laboratorijske opreme visokog kvaliteta. Možda bi vas moglo zanimatiVertikalna vakuumska pumpa za kružnu vodu,Laboratorijska koloidna mlina mašina, i20L Stakleni reaktor. Ovi su proizvodi dizajnirani tako da udovoljavaju potrebama različitih naučnih istraživanja i industrijskih primjena.
Zaključak
Ispitivanje proljetnog pokretanja MyBatis Mapper sučelja su neophodne za osiguranje kvalitete i pouzdanosti vaše aplikacije. Korištenjem proljetnog ispitivača, lako možemo pisati testove za ove sučelje u kontekstu primjene proljetnog pokretanja. Možemo koristiti baze podataka u memoriji za testiranje, rukovanje transakcijama i koristiti se podružljivo za izoliranje vanjskih ovisnosti.
Ako ste zainteresirani za naše proljetne proizvode testera ili bilo koju od povezane laboratorijske opreme, kontaktirajte nas za daljnje nabavke i pregovore. Zalažemo se za pružanje najboljih rješenja za vaše testiranje i istraživanje.
Reference
- Proljetna dokumentacija za pokretanje
- MyBatis dokumentacija
- JUNIT 5 Dokumentacija
- FIGUSTO DOKUMENTACIJA




