Mockito - Mockito - Wikipedia
![]() | tento článek může být pro většinu čtenářů příliš technická na to, aby tomu rozuměli.Únor 2010) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Vývojáři | Szczepan Faber, Brice Dutheil, Rafael Winterhalter, Tim van der Lippe a další. |
---|---|
Stabilní uvolnění | 3.3.11 / 14. května 2020[1] |
Úložiště | github |
Napsáno | Jáva |
Typ | Testování |
Licence | Licence MIT[2] |
webová stránka | stránky |
Mockito je otevřený zdroj testovací rámec pro Jáva propuštěn pod Licence MIT.[3][4] Rámec umožňuje vytvoření test zdvojnásobit předměty (falešné předměty ) v automatizované jednotkové testy za účelem vývoj řízený testem (TDD) nebo vývoj založený na chování (BDD).
Název a logo rámce jsou hrou mojito, druh nápoje.
Funkce
Mockito umožňuje vývojářům ověřit chování testovaný systém (SUT) bez stanovení očekávání předem.[5] Jedna z kritik falešné předměty je, že existuje těsné spojení zkušebního kódu s testovaným systémem.[6] Mockito se pokouší eliminovat vzor expect-run-verify[7] odstraněním specifikace očekávání. Mockito také poskytuje některé poznámky ke zmenšení standardní kód.[8]
Počátky
Mockito začal rozšířením syntaxe a funkčnosti EasyMock.[9][10]
Příklad
Zvaž toto oddělené Program Hello world; můžeme test jednotky některé jeho části, pomocí falešné předměty pro ostatní části.
balík org. příklady;import java.io.IOException;veřejnost třída HelloApplication { veřejnost statický rozhraní Greeter { Tětiva getGreeting(Tětiva předmět); Tětiva getIntroduction(Tětiva herec); } veřejnost statický třída HelloGreeter nářadí Greeter { soukromé Tětiva Ahoj; soukromé Tětiva segmentátor; veřejnost HelloGreeter(Tětiva Ahoj, Tětiva segmentátor) { tento.Ahoj = Ahoj; tento.segmentátor = segmentátor; } veřejnost Tětiva getGreeting(Tětiva předmět) { vrátit se Ahoj + " " + předmět; } veřejnost Tětiva getIntroduction(Tětiva herec) { vrátit se herec+segmentátor; } } veřejnost statický rozhraní HelloActable { prázdnota Řekni Ahoj(Tětiva herec, Tětiva předmět) hodí IOException; } veřejnost statický třída HelloAction nářadí HelloActable { soukromé Greeter ahoj Greeteri; soukromé Připojitelný ahoj spisovatel; veřejnost HelloAction(Greeter ahoj Greeteri, Připojitelný ahoj spisovatel) { super(); tento.ahoj Greeteri = ahoj Greeteri; tento.ahoj spisovatel = ahoj spisovatel; } veřejnost prázdnota Řekni Ahoj(Tětiva herec, Tětiva předmět) hodí IOException { ahoj spisovatel.připojit(ahoj Greeteri.getIntroduction(herec)).připojit(ahoj Greeteri.getGreeting(předmět)); } } veřejnost statický prázdnota hlavní(Tětiva... args) hodí IOException { Nový HelloAction(Nový HelloGreeter("Ahoj", ": "), Systém.ven).Řekni Ahoj("aplikace", "svět"); }}
Výsledek spuštění HelloApplication bude následující:
aplikace: ahoj svět
Test jednotky pro komponentu HelloActable může vypadat takto:
balík org. příklady;import statické org.mockito.Matchers.any;import statické org.mockito.Matchers.eq;import statické org.mockito.Mockito.mock;import statické org.mockito.Mockito.x;import statické org.mockito.Mockito.verify;import statické org.mockito.Mockito.kdy;import org.junit.Before;import org.junit.Test;import org.examples.HelloApplication.HelloActable;import org.examples.HelloApplication.HelloAction;import org.examples.HelloApplication.Greeter;veřejnost třída HelloActionUnitTest { Greeter ahojGreeterMock; Připojitelný ahojWriterMock; HelloActable helloAction; @Před veřejnost prázdnota založit() { ahojGreeterMock = falešný(Greeter.třída); ahojWriterMock = falešný(Připojitelný.třída); helloAction = Nový HelloAction(ahojGreeterMock, ahojWriterMock); } @Test veřejnost prázdnota testSay Ahoj() hodí Výjimka { když(ahojWriterMock.připojit(žádný(Tětiva.třída))).pak návrat(ahojWriterMock); když(ahojGreeterMock.getIntroduction(ekv("unitTest"))).pak návrat("unitTest:"); když(ahojGreeterMock.getGreeting(ekv("svět"))).pak návrat("Ahoj světe"); helloAction.Řekni Ahoj("unitTest", "svět"); ověřit(ahojGreeterMock).getIntroduction(ekv("unitTest")); ověřit(ahojGreeterMock).getGreeting(ekv("svět")); ověřit(ahojWriterMock, krát(2)).připojit(žádný(Tětiva.třída)); ověřit(ahojWriterMock, krát(1)).připojit(ekv("unitTest:")); ověřit(ahojWriterMock, krát(1)).připojit(ekv("Ahoj světe")); }}
Používá falešné objekty pro rozhraní Greeter a Appendable a implicitně předpokládá další případ použití:
unitTest: ahoj svět
Integrovaný testovací kód pro testování HelloActable zapojený společně s Greeterem může vypadat takto:
balík org. příklady;import statické org.mockito.Matchers.any;import statické org.mockito.Matchers.eq;import statické org.mockito.Mockito.mock;import statické org.mockito.Mockito.x;import statické org.mockito.Mockito.verify;import statické org.mockito.Mockito.kdy;import org.junit.Before;import org.junit.Test;import org.examples.HelloApplication.HelloActable;import org.examples.HelloApplication.HelloAction;import org.examples.HelloApplication.Greeter;import org.examples.HelloApplication.HelloGreeter;veřejnost třída HelloActionIntegrationTest { HelloActable helloAction; Greeter ahoj Greeteri; Připojitelný ahojWriterMock; @Před veřejnost prázdnota založit() { ahoj Greeteri = Nový HelloGreeter("Vítejte", "říká"); ahojWriterMock = falešný(Připojitelný.třída); helloAction = Nový HelloAction(ahoj Greeteri, ahojWriterMock); } @Test veřejnost prázdnota testSay Ahoj() hodí Výjimka { když(ahojWriterMock.připojit(žádný(Tětiva.třída))).pak návrat(ahojWriterMock); helloAction.Řekni Ahoj("integrationTest", "vesmír"); ověřit(ahojWriterMock, krát(2)).připojit(žádný(Tětiva.třída)); ověřit(ahojWriterMock, krát(1)).připojit(ekv(„integrationTest říká“)); ověřit(ahojWriterMock, krát(1)).připojit(ekv("Vítejte vesmír")); }}
Používá falešné objekty pouze místo připojitelných rozhraní, používá skutečné implementace pro další (HelloActable a Greeter) rozhraní a implicitně předpokládá další případ použití:
integrationTest říká Vítejte vesmír
Jak je patrné z příkazů importu tříd HelloActionUnitTest a HelloActionIntegrationTest, je nutné dát do svých sklenic nějaké sklenice Mockito a sklenice JUnit cesta třídy být schopen sestavit a spustit testovací třídy.
Viz také
Reference
- ^ „Vydání · mockito / mockito · GitHub“. Citováno 21. května 2020.
- ^ „Licence · mockito / mockito Wiki · GitHub“. Citováno 30. srpna 2019.
- ^ „Mockito v šesti snadných příkladech“. 2009. Citováno 2012-10-05.
- ^ "Jaký je nejlepší falešný rámec pro Javu?". Citováno 2010-12-29.
- ^ "Vlastnosti a motivace". Citováno 2010-12-29.
- ^ Fowler, Martin (2007). "Mocks nejsou pahýly". Citováno 2010-12-29.
- ^ Faber, Szczepan. "Touha po smrti". Citováno 2010-12-29.
- ^ Kaczanowski, Tomek. „Mockito - Open Source Java Mocking Framework“. Citováno 2013-09-17.
- ^ Faber, Szczepan. "Mockito". Citováno 2010-12-29.
- ^ „Mockito Home Page“. Citováno 2010-12-29.