Σε ένα κανονικό σενάριο, κάθε φορά που εντοπίζετε κάποιο σφάλμα κατά την εκτέλεση της δοκιμής, θα σταματήσετε τη δοκιμή, θα διορθώσετε το σφάλμα και θα εκτελέσετε ξανά τη δοκιμή.
Αλλά η JUnit έχει μια ελαφρώς διαφορετική προσέγγιση. Με τον συλλέκτη σφαλμάτων JUnit, μπορείτε να συνεχίσετε την εκτέλεση της δοκιμής ακόμα και μετά την εύρεση ενός προβλήματος ή την αποτυχία της δοκιμής. Ο συλλέκτης σφαλμάτων συλλέγει όλα τα αντικείμενα σφάλματος και το αναφέρει μόνο μία φορά μετά την ολοκλήρωση της δοκιμαστικής εκτέλεσης.
Σε αυτό το σεμινάριο, θα μάθετε-
- Τι είναι ο συλλέκτης σφαλμάτων στο JUnit;
- Τι είναι το @Rule στο jUnit;
- Παράδειγμα χρήσης ErrorCollector
- Οφέλη του JUnit ErrorCollector
Γιατί να χρησιμοποιήσετε το Συλλέκτη σφαλμάτων;
Κατά τη σύνταξη ενός δοκιμαστικού σεναρίου, θέλετε να εκτελέσετε όλες τις δοκιμές, ακόμη και αν κάποια γραμμή κώδικα αποτύχει λόγω αστοχίας δικτύου, αστοχίας ισχυρισμού ή άλλου λόγου. Σε αυτήν την περίπτωση, μπορείτε να συνεχίσετε να εκτελείτε δοκιμαστικό σενάριο χρησιμοποιώντας μια ειδική δυνατότητα που παρέχεται από την JUnit γνωστή ως "συλλέκτης σφαλμάτων".
Για αυτό, το JUnit χρησιμοποιεί @Rule σχολιασμό που χρησιμοποιείται για τη δημιουργία ενός αντικειμένου συλλέκτη σφαλμάτων. Μόλις δημιουργηθεί το αντικείμενο συλλέκτη σφαλμάτων, μπορείτε εύκολα να προσθέσετε όλα τα σφάλματα στο αντικείμενο χρησιμοποιώντας τη μέθοδο addError (Throwable error). Όπως γνωρίζετε, αυτό το Throwable είναι η σούπερ τάξη της κατηγορίας Exception and Error στην Java. Όταν προσθέτετε σφάλματα με αυτόν τον τρόπο, αυτά τα σφάλματα θα καταγραφούν στο αποτέλεσμα της δοκιμής JUnit.
Το πλεονέκτημα της προσθήκης όλων των σφαλμάτων σε έναν συλλέκτη σφαλμάτων είναι ότι μπορείτε να επαληθεύσετε όλα τα σφάλματα ταυτόχρονα. Επίσης, εάν το σενάριο αποτύχει στη μέση, μπορεί να συνεχίσει να το εκτελεί
Σημείωση : Σε περίπτωση που χρησιμοποιείτε απλό assert ή try / catch block, δεν θα είναι δυνατή η χρήση μεθόδου συλλογής σφαλμάτων.
Δείγμα κώδικα
Για να κατανοήσετε περισσότερα σχετικά με το Συλλέκτη σφαλμάτων, ανατρέξτε στο παρακάτω παράδειγμα κώδικα που δείχνει πώς να δημιουργήσετε ένα αντικείμενο Συλλέκτη σφαλμάτων και να προσθέσετε όλα τα σφάλματα σε αυτό το αντικείμενο για να παρακολουθήσετε το ζήτημα:
πακέτο guru99.junit;εισαγωγή org.junit.Rule;εισαγωγή org.junit.Test;εισαγωγή org.junit.rules.ErrorCollector;δημόσια τάξη ErrorCollectorExample {@Κανόναςδημόσιο ErrorCollector collector = νέο ErrorCollector ();@Δοκιμήδημόσιο άδειο παράδειγμα () {collector.addError (νέο Throwable ("Υπάρχει σφάλμα στην πρώτη γραμμή"));collector.addError (νέο Throwable ("Υπάρχει σφάλμα στη δεύτερη γραμμή"));collector.checkThat (getResults (),not (περιέχειString ("εδώ είναι ένα σφάλμα")));// όλες οι γραμμές κώδικα θα εκτελεστούν και στο τέλος μια συνδυασμένη αποτυχίανα συνδεθείτε}}
Τι είναι το @Rule στο jUnit;
Το JUnit παρέχει ειδικό είδος χειρισμού δοκιμών, Test Case ή test suite χρησιμοποιώντας τον σχολιασμό @rule . Χρησιμοποιώντας το @rule, μπορείτε εύκολα να προσθέσετε ή να επαναπροσδιορίσετε τη συμπεριφορά του τεστ.
Υπάρχουν αρκετοί ενσωματωμένοι κανόνες που παρέχονται από το JUnit API που μπορεί να χρησιμοποιήσει ένας δοκιμαστής ή ακόμα και μπορείτε να γράψετε τον δικό μας κανόνα.
Δείτε την παρακάτω γραμμή κώδικα, η οποία δείχνει τον τρόπο χρήσης του σχολίου @rule μαζί με το Συλλέκτη σφαλμάτων:
@Κανόναςδημόσιο ErrorCollector collector = νέο ErrorCollector ();
Παράδειγμα χρήσης ErrorCollector
Για να κατανοήσουμε τον συλλέκτη σφαλμάτων, ας δημιουργήσουμε μια τάξη και έναν κανόνα για τη συλλογή όλων των σφαλμάτων. Θα προσθέσετε όλα τα σφάλματα χρησιμοποιώντας το addError (ρίξιμο) εδώ
Δείτε παρακάτω τον κώδικα που απλώς δημιουργεί έναν κανόνα που δεν είναι τίποτα άλλο από τη δημιουργία "Σφάλμα Συλλεκτικό αντικείμενο." Το οποίο χρησιμοποιείται περαιτέρω για την προσθήκη όλων των σφαλμάτων για την αναφορά του προβλήματος στο τέλος:
ΣφάλμαCollectorExample.java
πακέτο guru99.junit;εισαγωγή org.junit.Assert;εισαγωγή org.junit.Rule;εισαγωγή org.junit.Test;εισαγωγή org.junit.rules.ErrorCollector;δημόσια τάξη ErrorCollectorExample {@Κανόναςδημόσιο ErrorCollector collector = νέο ErrorCollector ();@Δοκιμήδημόσιο άδειο παράδειγμα () {collector.addError (νέο Throwable ("Υπάρχει σφάλμα στην πρώτη γραμμή"));collector.addError (νέο Throwable ("Υπάρχει σφάλμα στη δεύτερη γραμμή"));System.out.println ("Γεια");προσπαθήστε {Assert.assertTrue ("A" == "B");} αλίευση (Throwable t) {collector.addError (t);}System.out.println ("Κόσμος !!!!");}}
TestRunner.java
Ας προσθέσουμε την παραπάνω δοκιμαστική τάξη σε έναν δοκιμαστικό δρομέα και να την εκτελέσουμε για να συλλέξουμε όλα τα σφάλματα. Δείτε παρακάτω τον κωδικό:
πακέτο guru99.junit;εισαγωγή org.junit.runner.JUnitCore;εισαγωγή org.junit.runner.Result;εισαγωγή org.junit.runner.notification.Failure;δημόσια τάξη TestRunner {Δημόσιο στατικό κενό (String [] args) {Αποτέλεσμα αποτελέσματος = JUnitCore.runClasses (ErrorCollectorExample.class);για (Αποτυχία αποτυχίας: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Αποτέλεσμα ==" + αποτέλεσμα.wasSuccessful ());}}
Παραγωγή:
Δείτε το ίχνος αποτυχίας που εντοπίζει όλα τα σφάλματα σε ένα μέρος:
Οφέλη του JUnit ErrorCollector
Μπορείτε να χρησιμοποιήσετε τον ισχυρισμό JUnit για λειτουργική επικύρωση ή GUI, π.χ.
- assertEquals (μήνυμα συμβολοσειράς, αναμενόμενο αντικείμενο, πραγματικό αντικείμενο) που συγκρίνουν ότι δύο αντικείμενα είναι ίσοι.
- Ομοίως, το assertTrue (συνθήκη Boolean) ισχυρίζεται ότι μια συνθήκη είναι αληθής.
Χρησιμοποιώντας τον ισχυρισμό, η δοκιμή επικύρωσης γίνεται εύκολη. Αλλά ένα σημαντικό ζήτημα είναι ότι η εκτέλεση δοκιμής θα σταματήσει ακόμη και αν αποτύχει ένας μόνο ισχυρισμός.
Η συνέχεια της δοκιμής και ο χειρισμός ανάκτησης είναι ζωτικής σημασίας για τον έλεγχο της επιτυχίας του αυτοματισμού. Ο συλλέκτης σφαλμάτων είναι ο καλύτερος τρόπος χειρισμού τέτοιων σεναρίων.
Περίληψη :
- Ο συλλέκτης σφαλμάτων Junit επιτρέπει σε μια δοκιμή να συνεχιστεί ακόμη και μετά την εύρεση του πρώτου προβλήματος και η δοκιμή αποτύχει στο τέλος
- Ο συλλέκτης σφαλμάτων συλλέγει όλα τα αντικείμενα σφάλματος και το αναφέρει μόνο, μετά από όλα, η δοκιμαστική εκτέλεση τελείωσε
- Το πλεονέκτημα της προσθήκης όλων των σφαλμάτων σε έναν συλλέκτη σφαλμάτων είναι ότι μπορείτε να επαληθεύσετε όλα τα σφάλματα ταυτόχρονα
- Ο συλλέκτης σφαλμάτων προσθέτει απλά σφάλματα χρησιμοποιώντας τη μέθοδο addError (ρίξιμο σφάλμα) που παρέχεται από το ErrorCollector.java.