Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mitkä ovat tärkeimmät erot Mockito -sovittajien ja Hamcrest -sovittajien välillä


Mitkä ovat tärkeimmät erot Mockito -sovittajien ja Hamcrest -sovittajien välillä


Mockito -ottelijoita ja Hamcrest -sovittajia käytetään molemmat Javassa testiväitteiden luomiseen, mutta ne palvelevat erilaisia ​​tarkoituksia ja niillä on selkeät ominaisuudet.

Mockito -sovittajat

Mockito -ottelijoita käytetään ensisijaisesti odotusten tai todentamisten asettamiseen työskennellessään mock -esineiden kanssa. Nämä sovittajat palauttavat vastaavan objektin tyypin, jonka avulla ne voidaan käyttää suoraan argumentteina menetelmäkutsuissa pilkkaobjekteihin. Esimerkiksi `org.mockito.matchers.any (kokonaisluku.class)` palauttaa `kokonaisluku ', mikä tekee siitä sopivan käytettäväksi menetelmän upottamisessa tai varmennuksessa, kuten` kun (mockfoo.getbarbyIndex (mikä tahansa (kokonaisluku. luokka))) `[1].

Mockito -ottelijat on suunniteltu toimimaan saumattomasti Mockiton pilkkaavan kehyksen kanssa, jolloin voit määritellä joustavat odotukset mock -esineiden menetelmäkutsuille. Niitä ei kuitenkaan käytetä tyypillisesti "vakuuttavat" -lausekkeissa, jotka liittyvät yleisemmin Hamcrest -ohjelmaan.

Hamcrest -sovittajat

Toisaalta Hamcrest -sovittajat on suunniteltu käytettäväksi "vakuuttavat" lausunnot testien olosuhteiden vakuuttamiseksi. He palauttavat `Matcher` -objektin, joka on predikaatti, jota voidaan käyttää arvioimaan, täyttyykö ehto. Hamcrest -sovittajat ovat erittäin joustavia ja ne voidaan yhdistää käyttämällä loogisia operaattoreita, kuten `allof`,` keyof` ja `ei` monimutkaisten väitteiden luomiseksi [2] [3].

Hamcrest -sovittajia käytetään laajasti yhdessä Junitin ja muiden testauskehysten kanssa selkeiden ja luettavien testiväitteiden kirjoittamiseen. Ne tarjoavat sujuvan sovellusliittymän, joka tekee testikoodista enemmän itse dokumentointia ja helpompaa ymmärtää. Esimerkiksi "assertThat (" Hei ", Equalto (" Hei "))" välittää selvästi väitteen tarkoituksen [7].

Integraatio Mockiton ja Hamcrestin välillä

Tapauksissa, joissa haluat käyttää Hamcrest -sovittajaa kontekstissa, joka vaatii mockito -sovittajan (esim. Menetelmäkutsun pinta -alan tai todentaminen), Mockito tarjoaa "argthat` -menetelmän. Tämän menetelmän avulla voit kääriä Hamcrest -sovittajan ja käyttää sitä mockito -sovittajana. Esimerkiksi `kun (mockfoo.getbarbydouble (argthat (closeto (1.0, 0,001))))))" käyttää Hamcrest -sovittajaa määrittääkseen ehdollisen kaksinkertaisen arvon jollain tarkkuudella [1] [5].

Mockito 2: ssa ja myöhemmin integraatiota Hamcrestin kanssa käsitellään "Mockitohamcrest` -luokan kautta, joka tarjoaa" argthat` -menetelmän, joka on erityisesti suunniteltu toimimaan Hamcrest -sovittajien kanssa [5] [10]. Tämä irrottaminen auttaa välttämään versiokonflikteja Mockiton ja Hamcrest -kirjastojen välillä.

Yhteenvetona voidaan todeta, että Mockito -ottelijoita käytetään pääasiassa pilkkaamiseen ja hölynpölyyn, kun taas Hamcrest -sovittajia käytetään väitteisiin. Molempia voidaan käyttää yhdessä tehokkaasti testeissä hyödyntämällä "argthat` -menetelmää Hamcrest -sovittajien integroimiseksi Mockiton pilkkaamiseen.

Viittaukset:
.
[2] https://www.javacodegeeks.com/2015/11/HAMCREST-MATCHers
[3] https://www.vogella.com/tutorials/hamcrest/article.html
.
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baeldung.com/hamcrest-taxt-Matchers
[7] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[8] https://www.scalatest.org/scaladoc/3.0.7/org/scalatest/matchers.html
[9] https://hamcrest.org/javahamcrest/tutorial
[10.