Στο Mockito, το `verifyzeroInteractions` είναι μια εξειδικευμένη μέθοδος επαλήθευσης που χρησιμοποιείται για να διασφαλιστεί ότι δεν πραγματοποιούνται κλήσεις μεθόδου σε ένα χλευασμένο αντικείμενο κατά τη διάρκεια μιας δοκιμής. Αυτή η μέθοδος είναι ζωτικής σημασίας για τη διατήρηση της καθαρότητας των δοκιμών μονάδων, εμποδίζοντας τις ακούσιες αλληλεπιδράσεις που θα μπορούσαν να υποδηλώνουν ελαττώματα σε λογικές ή περιττές εξαρτήσεις.
Διαφορές από άλλες μεθόδους επαλήθευσης
1 Σκοπός και συμπεριφορά:
- `VerifyzeroInteractions`: Αυτή η μέθοδος ελέγχει ότι δεν έχουν γίνει κλήσεις μεθόδους σε ένα κοτόπουλο αντικείμενο. Εάν εντοπιστεί κάποια κλήση μεθόδου, το Mockito ρίχνει μια εξαίρεση, προκαλώντας την αποτυχία της δοκιμής. Χρησιμοποιείται για να ισχυριστεί ότι ένα ψεύτικο αντικείμενο παραμένει ανέγγιχτο κατά τη διάρκεια της εκτέλεσης των δοκιμών [1] [4].
- `επαληθεύστε ': Αυτή η μέθοδος χρησιμοποιείται για να επαληθεύσει ότι οι συγκεκριμένες κλήσεις μεθόδου εμφανίζονται όπως αναμένεται. Σας επιτρέπει να ελέγξετε εάν μια μέθοδος κλήθηκε με συγκεκριμένα επιχειρήματα και μπορεί να χρησιμοποιηθεί με διάφορες λειτουργίες επαλήθευσης όπως `times ()` `atleast ()` και `Atost ()` για να καθορίσετε τον αριθμό των επικλήσεων [2] [7].
2. Τρόποι επαλήθευσης:
- Το `verifyzeroInteractions` δεν υποστηρίζει τρόπους επαλήθευσης. Απλώς ελέγχει για την απουσία οποιωνδήποτε αλληλεπιδράσεων.
- `Verify` υποστηρίζει πολλαπλές λειτουργίες επαλήθευσης, όπως` times () `,` atleast () `,` atLeAdOnce () `και` aplost () `, επιτρέποντάς σας να καθορίσετε πόσες φορές πρέπει να ονομάζεται μέθοδος [2] [7].
3. Τάξη επίκλησης:
- `Η VerifyzeroInteractions` δεν ασχολείται με τη σειρά των κλήσεων μεθόδων, καθώς δεν ελέγχει καθόλου αλληλεπιδράσεις.
- `Verify 'μπορεί να χρησιμοποιηθεί με` inorder` για να επαληθεύσει τη σειρά της μεθόδου επικλήσεις σε ψεύτικα αντικείμενα. Αυτό είναι χρήσιμο όταν η ακολουθία των κλήσεων μεθόδου είναι σημαντική [2] [7].
4. Χρησιμοποιήστε περιπτώσεις:
- Το `verifyzeroInteractions 'χρησιμοποιείται συνήθως όταν θέλετε να βεβαιωθείτε ότι ένα ψεύτικο αντικείμενο δεν χρησιμοποιείται καθόλου σε ένα σενάριο δοκιμής. Αυτό βοηθά στην απομόνωση της υπό δοκιμή μονάδας και στη διασφάλιση ότι δεν εμφανίζονται παρενέργειες λόγω απροσδόκητων αλληλεπιδράσεων [1] [4].
- `Verify` χρησιμοποιείται σε σενάρια όπου πρέπει να επιβεβαιώσετε ότι εμφανίζονται συγκεκριμένες αλληλεπιδράσεις μεταξύ των αντικειμένων. Είναι απαραίτητο για τη δοκιμή της αναμενόμενης συμπεριφοράς ενός υπό δοκιμή συστήματος [2] [7].
5. Σχέση με `verifynomoreinteractions`:
- `VerifyZeroInteractions` Ελέγχει ότι δεν έχουν συμβεί καθόλου αλληλεπιδράσεις.
- `VerifyNomoreInteractions` Ελέγχει ότι όλες οι αλληλεπιδράσεις σε ένα ψεύτικο αντικείμενο έχουν επαληθευτεί. Εξασφαλίζει ότι δεν υπάρχουν μη επαληθευμένες αλληλεπιδράσεις μετά τη χρήση του «επαλήθευσης» για συγκεκριμένες κλήσεις μεθόδου [3] [9].
Συνοπτικά, το `verifyzeroInteractions` είναι μια εξειδικευμένη μέθοδος που επικεντρώνεται στην εξασφάλιση ότι δεν προκύπτουν αλληλεπιδράσεις, ενώ το` verify` είναι πιο ευπροσάρμοστο, επιτρέποντάς σας να ελέγξετε για συγκεκριμένες αλληλεπιδράσεις και τη συχνότητα τους. Και οι δύο μέθοδοι είναι απαραίτητες για τη δοκιμή μονάδων με το Mockito, εξυπηρετώντας διαφορετικούς σκοπούς ανάλογα με το δοκιμαστικό σενάριο.
Αναφορές:[1] https://www.dhiwise.com/post/how-to-use-verifyzeroineractions-for-better-flutter-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-complete-guide-to-mockito-verify
[3] https://stackoverflow.com/questions/52396683/differed-between-verifynomoreinteractions-and-verifyzeroineractions-in-cockit
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.verifyzerointeractions
[5] https://stackoverflow.com/questions/64239160/using-mockito-when-to-mock-and-verify-vs-mockito-verify
[6] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[7] https://www.toptal.com/java/a-guide-to-everyday-mockito
[8] https://www.baeldung.com/mockito-verify
[9] https://www.digitalocean.com/community/tutorials/mockito-verify