Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς συγκρίνεται η μέθοδος επαναφοράς του Mockito με άλλες βιβλιοθήκες


Πώς συγκρίνεται η μέθοδος επαναφοράς του Mockito με άλλες βιβλιοθήκες


Η μέθοδος `reset ()` `` είναι ένα χαρακτηριστικό που σας επιτρέπει να επαναφέρετε ένα ψεύτικο αντικείμενο, ώστε να μπορεί να επαναχρησιμοποιηθεί. Ωστόσο, η χρήση του γενικά αποθαρρύνεται από τους προγραμματιστές Mockito και τους χρήστες, καθώς μπορεί να υποδεικνύει κακώς σχεδιασμένες δοκιμές ή κώδικα που είναι υπερβολικά περίπλοκο και δύσκολο να δοκιμαστεί καθαρά [7] [9]. Αντ 'αυτού, η συνιστώμενη προσέγγιση είναι να δημιουργηθούν νέα ψεύτικα για κάθε μέθοδο δοκιμής για να εξασφαλιστεί η ανεξαρτησία και η σαφήνεια στη δοκιμή [7] [9].

σύγκριση με άλλες κοροϊδευτικές βιβλιοθήκες

1. Jmock2: Σε αντίθεση με το Mockito, το JMOCK2 χρησιμοποιεί ένα πλαίσιο για τη διαχείριση των προσδοκιών και των ψεύτικων πληροφοριών, οι οποίες ξαναχτίστηκαν για κάθε μέθοδο δοκιμής. Αυτό σημαίνει ότι το JMOCK2 δεν απαιτεί ρητή επαναφορά όπως το Mockito [10]. Η προσέγγιση του JMOCK2 βοηθά στη διατήρηση της απομόνωσης των δοκιμών χωρίς να χρειάζεται να επαναφέρετε με μη αυτόματο τρόπο τα ψεύτικα.

2. Easymock: Το Easymock επίσης δεν απαιτεί συνήθως μια μέθοδο επαναφοράς. Έχει σχεδιαστεί για να δημιουργεί νέα ψεύτικα αντικείμενα για κάθε δοκιμή, παρόμοια με τη συνιστώμενη πρακτική με το Mockito. Ο Szczepan Faber, ένας προγραμματιστής Mockito, αναφέρει ότι ποτέ δεν χρειαζόταν ένα χαρακτηριστικό επαναφοράς κατά τη χρήση του Easymock [8].

3. Mockito εναντίον άλλων βιβλιοθηκών: Γενικά, άλλες βιβλιοθήκες όπως το JMOCK2 και το Easymock προωθούν μια καθαρότερη προσέγγιση δοκιμών είτε με αυτόματη διαχείριση της ψεύτικης κατάστασης είτε με την ενθάρρυνση της δημιουργίας νέων ψαριών για κάθε δοκιμή. Η μέθοδος `reset ()` `` είναι περισσότερο μια εξαίρεση και όχι ο κανόνας στα κοροϊδευτικά πλαίσια.

βέλτιστες πρακτικές

- Αποφύγετε τη χρήση `reset ()`: Εκτός αν είναι απολύτως απαραίτητο, όπως όταν ένα ψεύτικο εγχέεται από ένα δοχείο και δεν μπορεί να αναδημιουργηθεί για κάθε δοκιμή, είναι σκόπιμο να αποφευχθεί η χρήση `reset ()`. Αντ 'αυτού, εστιάστε στη δημιουργία απλών, εστιασμένων δοκιμών με νέα ψεύτικα για κάθε σενάριο [7] [9].

- Χρησιμοποιήστε `ClearInvocations ()`: Εάν χρειάζεται να καθαρίσετε τις αλληλεπιδράσεις χωρίς να επαναφέρετε το stubbing, χρησιμοποιήστε `clearVocations ()`. Αυτή η μέθοδος σάς επιτρέπει να διατηρήσετε το stubbing κατά την εκκαθάριση τυχόν καταγεγραμμένων αλληλεπιδράσεων, οι οποίες μπορεί να είναι χρήσιμες σε ορισμένα σενάρια [5].

- Κωδικός refactor for testability: Εάν βρείτε τον εαυτό σας πρέπει να χρησιμοποιήσετε `reset ()` συχνά, μπορεί να υποδηλώνει ότι ο κώδικας σας θα μπορούσε να επωφεληθεί από την refactoring για να γίνει πιο δοκιμαστή. Αυτό θα μπορούσε να περιλαμβάνει τη διάσπαση σύνθετων μεθόδων ή τη βελτίωση της έγχυσης εξάρτησης [9].

Συνοπτικά, ενώ το Mockito παρέχει μια μέθοδο `reset ()`, η χρήση του γενικά αποθαρρύνεται υπέρ της δημιουργίας νέων ψαριών για κάθε δοκιμή. Άλλες βιβλιοθήκες ψεύτικων προωθούν συχνά παρόμοιες πρακτικές, δίνοντας έμφαση στις καθαρές και ανεξάρτητες δοκιμές για τη σύνθετη ψεύτικη διαχείριση.

Αναφορές:
[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/appropriate-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareengineering.stackkexchange.com/questions/188299/is-this-an-appriate-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests-when-using-mockito