När man arbetar med Mockito används Hamcrest ofta för sina uttrycksfulla matchare, vilket förbättrar testernas läsbarhet. Det finns emellertid alternativ som kan fungera bra med Mockito, var och en med sina egna styrkor och svagheter.
Assertj
Assertj är ett populärt alternativ till Hamcrest för att skriva påståenden i enhetstester. Det ger ett flytande API som många utvecklare har lättare att använda och mer uttrycksfulla än Hamcrest. Assertjs syntax föredras ofta för sin läsbarhet och förmågan att enkelt skapa anpassade påståenden. Medan AssertJ inte direkt integreras med Mockito som Hamcrest gör, kan den användas tillsammans med Mockito för påståenden, vilket gör tester mer läsbara och underhållbara. Assertj är emellertid främst inriktad på påståenden snarare än de bredare matchningsfunktionerna för Hamcrest [1] [3].
sanning
Sanningen är ett annat påstående bibliotek utvecklat av Google. Det erbjuder ett flytande API som liknar assertj men fokuserar mer på att ge bättre stöd för automatisk sluttning i IDE, vilket kan vara fördelaktigt för att upptäcka tillgängliga påståenden. Sanningen används inte lika vanligt med mockito som Hamcrest men kan användas för påståenden i tester. Liksom assertj är sanningen mer fokuserad på påståenden snarare än den allmänna matchningen som Hamcrest ger [3].
Mockitos inbyggda matchare
Mockito själv tillhandahåller matchare som kan användas för att stubba och verifiera interaktioner med håliga objekt. Dessa matchare returnerar den typ de matchar (t.ex. `alla (heltal. Klass)` returnerar ett `heltal), som skiljer sig från Hamcrest -matchare som returnerar en` matcher '. För att använda Hamcrest-matchare med Mockito kan du använda `argthat` eller` mockitohamcrest.argThat` för att konvertera en Hamcrest-matcher till en mockito-kompatibel form [7].
Anpassade implementeringar
För scenarier där du föredrar att inte använda externa bibliotek kan du implementera dina egna matchare eller påståenden. Detta tillvägagångssätt möjliggör fullständig kontroll över beteendet och syntaxen men kräver mer ansträngning och underhåll. Det rekommenderas vanligtvis inte om du inte har mycket specifika behov som inte uppfylls av befintliga bibliotek.
Slutsats
Medan Hamcrest används allmänt med Mockito på grund av dess flexibilitet och uttrycksfullhet, kan alternativ som AssertJ och Sanning förbättra påståendet av dina tester. Om du letar efter något som integreras bra med Mockito för matchningsändamål, förblir Hamcrest ett starkt val, men du kan använda dess matchare tillsammans med andra påståendebibliotek för en mer omfattande testupplevelse. I slutändan beror valet på dina specifika behov och preferenser för läsbarhet, användarvänlighet och vilken typ av påståenden eller matcher du behöver utföra i dina tester.
Citeringar:[1] https://www.reddit.com/r/java/comments/nj7dvd/who_here_using_the_hamcrest_api_and_why/
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://truth.dev/comparison.html
[4] https://www.reddit.com/r/javahelp/comments/oqz8cn/unit_testing_with_mockito_framework_why_do_we/
]
]
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
]