Χρησιμοποιώντας το Mockitohamcrest για τα παραδοσιακά hamcrest matchers προσφέρει πολλά πλεονεκτήματα, ιδιαίτερα όταν εργάζεστε με το Mockito για να χλευάζετε σε δοκιμές μονάδων. Εδώ είναι τα βασικά οφέλη:
1. Ενσωμάτωση με το Mockito: Το Mockitohamcrest σας επιτρέπει να ενσωματώσετε απρόσκοπτα τους hamcrest matchers με το Mockito Mocking Framework. Αυτή η ενσωμάτωση είναι ζωτικής σημασίας για τη δημιουργία stubs ή την επαλήθευση των μεθόδων με μέθοδο με σύνθετη αντιστοίχιση επιχειρήματος, η οποία δεν υποστηρίζεται άμεσα από τους παραδοσιακούς αγώνες Hamcrest μόνο. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το `mockitohamcrest.ArgThat` για να μετατρέψετε ένα hamcrest matcher σε ένα mockito matcher, επιτρέποντάς σας να χρησιμοποιήσετε το πλούσιο σύνολο των hamcrest σε matchito propstes [1] [10] [12].
2. Αποφυγή ασυμβατότητας της έκδοσης: Το Mockito αποσυνδέθηκε από το Hamcrest στην έκδοση 2.1.0 για να αποφευχθεί η ασυμβατότητα της έκδοσης που είχαν προκαλέσει προβλήματα για τους χρήστες στο παρελθόν. Το Mockitohamcrest παρέχει έναν τρόπο να χρησιμοποιήσετε τους hamcrest matchers χωρίς να συνδέονται στενά με μια συγκεκριμένη έκδοση του Hamcrest, μειώνοντας έτσι τις πιθανές συγκρούσεις [1] [10].
3. Ευελιξία στην αντιστοίχιση επιχειρήματος: Το Mockitohamcrest σάς επιτρέπει να χρησιμοποιήσετε την ευέλικτη και εκφραστική αντιστοίχιση του Hamcrest για να ορίσετε σύνθετα σενάρια που ταιριάζουν με τα επιχειρήματα. Αυτό είναι ιδιαίτερα χρήσιμο όταν πρέπει να επαληθεύσετε ότι μια μέθοδος κλήθηκε με επιχειρήματα που ταιριάζουν με ορισμένες προϋποθέσεις, όπως συμβολοσειρές που περιέχουν συγκεκριμένα υποστρώματα ή αριθμούς εντός ενός ορισμένου εύρους [4] [12].
4. Βελτιωμένη αναγνωσιμότητα και αυτο-τεκμηρίωση Κωδικός: Χρησιμοποιώντας τους Hamcrest Matchers μέσω του Mockitohamcrest, οι δοκιμές σας μπορούν να παραμείνουν αυτο-τεκμηριωμένες και εύκολο στην ανάγνωση. Οι Matchers εκφράζουν σαφώς την πρόθεση της δοκιμής, διευκολύνοντας τους προγραμματιστές να κατανοήσουν τι δοκιμάζεται χωρίς να χρειάζονται πρόσθετα σχόλια [3] [9].
5. Καλύτερα μηνύματα σφάλματος: Όταν οι ισχυρισμοί αποτυγχάνουν, το Hamcrest παρέχει λεπτομερή και σημαντικά μηνύματα σφάλματος, τα οποία μπορούν να βοηθήσουν σημαντικά στη σφάλμα. Αυτό είναι ιδιαίτερα ευεργετικό όταν χρησιμοποιείτε το Mockitohamcrest, καθώς βοηθά στον εντοπισμό γιατί μια ψεύτικη επαλήθευση απέτυχε, καθιστώντας ευκολότερη τη διάγνωση των προβλημάτων [3] [9].
6. Προσαρμογή και επεκτάτιση: Το API Matcher της Hamcrest σας επιτρέπει να δημιουργήσετε προσαρμοσμένους matchers προσαρμοσμένους στις συγκεκριμένες ανάγκες δοκιμών σας. Όταν συνδυάζεται με το mockitohamcrest, αυτή η επεκτασιμότητα σας επιτρέπει να γράφετε πιο στοχοθετημένες και εκφραστικές δοκιμές που ταιριάζουν με ακρίβεια της λογικής της εφαρμογής σας [6] [9].
Συνοπτικά, το Mockitohamcrest προσφέρει έναν ισχυρό συνδυασμό των ψεύτικων δυνατοτήτων του Mockito με τους ευέλικτους και εκφραστικούς αγώνες του Hamcrest, την ενίσχυση της αναγνωσιμότητας των δοκιμών, της ευελιξίας και της συντήρησης.
Αναφορές:[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-inify-invocation-of collection-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.mockitohamcrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.9/org/mockito/argumentmatcher.html
[6] https://www.javacodegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.hamcrest.mockitohamcrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2FargumentMatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher