Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Υπάρχουν κοινές παγίδες όταν χλευάζετε τις εξαιρέσεις με το mockito


Υπάρχουν κοινές παγίδες όταν χλευάζετε τις εξαιρέσεις με το mockito


Όταν χρησιμοποιείτε το Mockito για να ψεύσετε εξαιρέσεις, αρκετές κοινές παγίδες μπορούν να κάνουν τις δοκιμές σας λιγότερο αποτελεσματικές ή πιο δύσκολο να διατηρηθούν. Εδώ είναι μερικές από αυτές τις παγίδες και πώς να τις αποφύγετε:

1.

Μία από τις σημαντικότερες παγίδες είναι η υπερβολική. Αυτό συμβαίνει όταν χλευάζετε πάρα πολλές εξαρτήσεις, οδηγώντας σε δοκιμές που είναι εύθραυστες και δύσκολο να διατηρηθούν. Η υπερβολική πρόσληψη μπορεί να προκαλέσει την εστίαση των δοκιμών στα ψεύτικα παρά στην πραγματική συμπεριφορά του υπό δοκιμή του συστήματος. Για να αποφευχθεί αυτό, επικεντρωθείτε στο να χλευάζετε μόνο τους συνεργάτες που έχουν μη τετριμμένη συμπεριφορά ή εκείνες των οποίων οι αλληλεπιδράσεις θέλετε να επαληθεύσετε. Χρησιμοποιήστε πραγματικές περιπτώσεις για απλές συνεργασίες [3].

2. Μη έγκυρες εξαιρέσεις **

Το Mockito εξασφαλίζει ότι η εξαίρεση που ρίχνεται ισχύει για τη συγκεκριμένη μέθοδο. Εάν προσπαθήσετε να ρίξετε μια εξαίρεση που δεν βρίσκεται στη λίστα εξαιρέσεων της μεθόδου, το Mockito θα διαμαρτυρηθεί. Για παράδειγμα, εάν μια μέθοδος δεν δηλώνει «iOexception», προσπαθώντας να την χλευάσει για να ρίξει μια «iOexception» θα οδηγήσει σε ένα σφάλμα [1]. Πάντα να διασφαλίζετε ότι η εξαίρεση που έχει χλευαστεί ισχύει για τη μέθοδο.

3. Χρησιμοποιώντας το `thenthrow ()` με κενές μεθόδους **

`όταν () thenthrow ()` δεν μπορεί να χρησιμοποιηθεί με κενές μεθόδους επειδή δεν υπάρχει τιμή επιστροφής για να ψεύσει. Αντ 'αυτού, χρησιμοποιήστε `dothrow ()` για μεθόδους κενών. Η ανάμειξη αυτών των μεθόδων μπορεί να οδηγήσει σε σφάλματα [2].

4. Έλλειψη εξειδίκευσης **

Όταν χλευάζετε τις εξαιρέσεις, είναι σημαντικό να είστε συγκεκριμένοι σχετικά με τις εξαιρέσεις που δοκιμάζετε. Αποφύγετε την υπερβολική πρόσληψη εστιάζοντας σε εξαιρέσεις σχετικές με το σενάριο δοκιμών. Αυτό βοηθά στη διατήρηση των δοκιμών εστιασμένων και διατηρήσιμων [2] [8].

5. Εσφαλμένος χειρισμός εκτελέσεων **

Βεβαιωθείτε ότι ο κωδικός εφαρμογής είναι έτοιμος να χειριστεί σωστά τις εξαιρέσεις, ακόμη και όταν χλευάζεται κατά τη διάρκεια των δοκιμών. Αυτό περιλαμβάνει τη δοκιμή της λογικής για τη διαχείριση εξαιρέσεων για να διασφαλιστεί ότι συμπεριφέρεται όπως αναμένεται [2].

6. Χρήση σημαντικών μηνυμάτων σφάλματος **

Όταν χλευάζετε τις εξαιρέσεις, συμπεριλάβετε σημαντικά μηνύματα για να βοηθήσετε στη διάγνωση των προβλημάτων εάν οι δοκιμές αποτύχουν. Αυτή η πρακτική ενισχύει τη σαφήνεια και την αποτελεσματικότητα των δοκιμών σας [2].

7. Δοκιμή λογικής χειρισμού εξαιρέσεων **

Βεβαιωθείτε ότι ο κώδικας χειρίζεται τις εξαιρέσεις όπως αναμενόταν. Αυτό περιλαμβάνει την επαλήθευση ότι η εφαρμογή συμπεριφέρεται σωστά όταν ρίχνονται εξαιρέσεις, κάτι που είναι ζωτικής σημασίας για την κατασκευή ανθεκτικών εφαρμογών [2].

8. Επαναφορά και εκκαθάριση ψεύτικων **

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

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

Αναφορές:
[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argum
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-trhrow-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito