Τι είναι οι σχολιασμοί JUnit;
Το JUNIT ANNOTATIONS είναι μια ειδική μορφή συντακτικών μετα-δεδομένων που μπορούν να προστεθούν στον πηγαίο κώδικα Java για καλύτερη αναγνωσιμότητα και δομή κώδικα. Οι μεταβλητές, οι παράμετροι, τα πακέτα, οι μέθοδοι και οι τάξεις μπορούν να επισημανθούν. Οι σχολιασμοί εισήχθησαν στο Junit4, γεγονός που καθιστά τον κώδικα Java πιο ευανάγνωστο και απλό. Αυτή είναι η μεγάλη διαφορά μεταξύ Junit3 και Junit4 που βασίζεται στο σχολιασμό του Junit4.
Με τη γνώση των σχολιασμών στο Junit5, κάποιος μπορεί εύκολα να μάθει και να εφαρμόσει ένα τεστ JUnit. Παρακάτω είναι η λίστα των σημαντικών και συχνά χρησιμοποιούμενων σχολιασμών:
S.No. | Σχολιασμοί | Περιγραφή |
---|---|---|
1. | @Δοκιμή | Αυτός ο σχολιασμός είναι μια αντικατάσταση του org.junit.TestCase που υποδεικνύει ότι η δημόσια κενή μέθοδος στην οποία είναι προσαρτημένη μπορεί να εκτελεστεί ως δοκιμαστική υπόθεση. |
2. | @Πριν | Αυτός ο σχολιασμός χρησιμοποιείται αν θέλετε να εκτελέσετε κάποια δήλωση, όπως προϋποθέσεις πριν από κάθε δοκιμαστική υπόθεση. |
3. | @Πριν το μάθημα | Αυτός ο σχολιασμός χρησιμοποιείται αν θέλετε να εκτελέσετε κάποιες δηλώσεις πριν από την εκτέλεση όλων των δοκιμαστικών περιπτώσεων, π.χ. η δοκιμαστική σύνδεση πριν από όλες τις δοκιμαστικές περιπτώσεις. |
4. | @Μετά | Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να εκτελέσετε ορισμένες δηλώσεις μετά από κάθε δοκιμαστική υπόθεση για π.χ. επαναφορά μεταβλητών, διαγραφή προσωρινών αρχείων, μεταβλητών κ.λπ. |
5. | @Μετά το μάθημα | Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί αν θέλετε να εκτελέσετε κάποιες δηλώσεις μετά από όλες τις δοκιμαστικές περιπτώσεις, π.χ. Απελευθέρωση πόρων μετά την εκτέλεση όλων των δοκιμαστικών περιπτώσεων. |
6. | @ Αγνοεί | Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να αγνοήσετε ορισμένες δηλώσεις κατά την εκτέλεση της δοκιμής, π.χ. απενεργοποίηση ορισμένων δοκιμαστικών περιπτώσεων κατά την εκτέλεση της δοκιμής. |
7. | @ Δοκιμή (χρονικό όριο = 500) | Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί αν θέλετε να ορίσετε κάποιο χρονικό όριο κατά τη διάρκεια της εκτέλεσης δοκιμής, π.χ. εάν εργάζεστε βάσει κάποιας SLA (συμφωνία επιπέδου υπηρεσίας) και οι δοκιμές πρέπει να ολοκληρωθούν εντός ορισμένου χρόνου. |
8. | @Test (αναμένεται = IllegalArgumentException.class) | Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να χειριστείτε κάποια εξαίρεση κατά την εκτέλεση της δοκιμής. Για παράδειγμα, εάν θέλετε να ελέγξετε εάν μια συγκεκριμένη μέθοδος ρίχνει συγκεκριμένη εξαίρεση ή όχι. |
Σε αυτό το σεμινάριο, θα μάθετε-
- Παράδειγμα σχολιασμών JUnit
- Κατηγορία Assert JUnit
- Κατηγορία δοκιμαστικών περιπτώσεων JUnit
- Τάξη JUnit TestResult
- JUnit Test Suite Class
Παράδειγμα σχολιασμών JUnit
Ας δημιουργήσουμε μια τάξη που θα καλύπτει σημαντικούς σχολιασμούς JUnit με απλές δηλώσεις εκτύπωσης και θα την εκτελέσουμε με μια δοκιμαστική τάξη:
Βήμα 1) Σκεφτείτε παρακάτω την κλάση java που έχει διάφορες μεθόδους που συνδέονται με τους παραπάνω σχολιασμούς:
JunitAnnotationsExample.java
πακέτο guru99.junit;εισαγωγή στατικού org.junit.Assert.assertEquals;εισαγωγή στατικού org.junit.Assert.assertFalse;εισαγωγή java.util.ArrayList;εισαγωγή org.junit. Μετά;εισαγωγή org.junit.AfterClass;εισαγωγή org.junit. Πριν;εισαγωγή org.junit.BeforeClass;εισαγωγή org.junit. Αγνοήστε;εισαγωγή org.junit.Test;δημόσια τάξη JunitAnnotationsExample {ιδιωτική λίστα ArrayList;@Πριν το μάθημαδημόσιο στατικό κενό m1 () {System.out.println ("Using @BeforeClass, εκτελέστηκε πριν από όλες τις δοκιμαστικές περιπτώσεις");}@Πρινδημόσιο κενό m2 () {list = νέο ArrayList ();System.out.println ("Χρήση @Before σχολιασμών, που εκτελούνται πριν από κάθε δοκιμαστική περίπτωση");}@Μετά το μάθημαδημόσιο στατικό κενό m3 () {System.out.println ("Using @AfterClass, εκτελέστηκε μετά από όλες τις δοκιμαστικές περιπτώσεις");}@Μετάδημόσιο κενό m4 () {list.clear ();System.out.println ("Using @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση");}@Δοκιμήδημόσιο κενό m5 () {list.add ("δοκιμή");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Αγνοώδημόσιο κενό m6 () {System.out.println ("Χρησιμοποιώντας το @Ignore, αυτή η εκτέλεση αγνοείται");}@ Δοκιμή (χρονικό όριο = 10)δημόσιο κενό m7 () {System.out.println ("Χρησιμοποιώντας το @Test (timeout), μπορεί να χρησιμοποιηθεί για την επιβολή χρονικού ορίου στη δοκιμαστική περίπτωση JUnit4");}@Test (αναμένεται = NoSuchMethodException.class)δημόσιο κενό m8 () {System.out.println ("Χρησιμοποιώντας το @Test (αναμένεται), θα ελέγξει για συγκεκριμένη εξαίρεση κατά την εκτέλεση του").}}
Βήμα 2) Ας δημιουργήσουμε μια δοκιμαστική τάξη για να εκτελέσουμε την παραπάνω δοκιμή:
TestRunner.java
πακέτο guru99.junit;εισαγωγή org.junit.runner.JUnitCore;εισαγωγή org.junit.runner.Result;εισαγωγή org.junit.runner.notification.Failure;δημόσια τάξη TestRunner {Δημόσιο στατικό κενό (String [] args) {Αποτέλεσμα αποτελέσματος = JUnitCore.runClasses (JunitAnnotationsExample.class);για (Αποτυχία αποτυχίας: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Αποτέλεσμα ==" + αποτέλεσμα.wasSuccessful ());}}
Αναμενόμενο Αποτέλεσμα
- Όλες οι δοκιμαστικές περιπτώσεις θα εκτελεστούν μία προς μία και όλες οι εκτυπώσεις μπορούν να προβληθούν σε μια κονσόλα.
- Όπως συζητήθηκε στον παραπάνω πίνακα @Before, το @BeforeClass [μέθοδος m1 () και m2 ()] θα εκτελεστεί πριν από κάθε και πριν από όλες τις δοκιμαστικές περιπτώσεις αντίστοιχα.
- Με τον ίδιο τρόπο @ after, @ afterClass (μέθοδος m3 () και m4 ()) θα εκτελεστεί μετά από κάθε και μετά από όλες τις δοκιμαστικές περιπτώσεις αντίστοιχα. Το @ignore (μέθοδος m6 ()) θα θεωρηθεί ότι αγνοεί το τεστ.
Ας αναλύσουμε λεπτομερώς τις δοκιμαστικές περιπτώσεις που χρησιμοποιούνται στην παραπάνω κλάση java:
- Εξετάστε τη μέθοδο m5 () όπως δίνεται παρακάτω:
@Δοκιμήδημόσιο κενό m5 () {list.add ("δοκιμή");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}
Στην παραπάνω μέθοδο καθώς προσθέτετε μια συμβολοσειρά στη μεταβλητή "λίστα" έτσι
- list.isEmpty () θα επιστρέψει false.
- Το assertFalse (list.isEmpty ()) πρέπει να επιστρέψει true.
- Ως αποτέλεσμα, η δοκιμαστική θήκη θα περάσει .
Όπως έχετε προσθέσει μόνο μία συμβολοσειρά στη λίστα, έτσι το μέγεθος είναι ένα.
- Το list.size () πρέπει να επιστρέψει την τιμή int ως "1".
- Έτσι, το assertEquals (1, list.size ()) πρέπει να επιστρέψει αληθινό.
- Ως αποτέλεσμα, η δοκιμαστική θήκη θα περάσει .
- Εξετάστε τη μέθοδο m7 () όπως δίνεται παρακάτω:
@ Δοκιμή (χρονικό όριο = 10)δημόσιο κενό m7 () {System.out.println ("Χρησιμοποιώντας το @Test (timeout), μπορεί να χρησιμοποιηθεί για την επιβολή χρονικού ορίου στη δοκιμαστική περίπτωση JUnit4");}
Όπως συζητήθηκε παραπάνω, ο σχολιασμός @Test (timeout = 10) χρησιμοποιείται για την επιβολή χρονικού ορίου στη δοκιμαστική περίπτωση.
- Εξετάστε τη μέθοδο m8 () όπως δίνεται παρακάτω:
@Test (αναμένεται = NoSuchMethodException.class)δημόσιο κενό m8 () {System.out.println ("Χρησιμοποιώντας το @Test (αναμένεται), θα ελέγξει για συγκεκριμένη εξαίρεση κατά την εκτέλεση του").}
Όπως συζητήθηκε παραπάνω, το @Test (αναμένεται) θα ελέγξει για συγκεκριμένη εξαίρεση κατά την εκτέλεσή του, οπότε η μέθοδος m8 () θα ρίξει "Χωρίς τέτοια εξαίρεση μεθόδου" Ως αποτέλεσμα, η δοκιμή θα εκτελεστεί με εξαίρεση.
Καθώς περνούν όλες οι δοκιμαστικές περιπτώσεις, αυτό οδηγεί σε επιτυχή εκτέλεση δοκιμής.
Πραγματικό αποτέλεσμα
Δεδομένου ότι υπάρχουν τρεις περιπτώσεις δοκιμής στο παραπάνω παράδειγμα, όλες οι δοκιμαστικές περιπτώσεις θα εκτελεστούν μία προς μία. Δείτε την έξοδο παρακάτω :
Δείτε παρακάτω τις εκτυπώσεις που μπορείτε να δείτε στην κονσόλα:
Χρησιμοποιώντας το @BeforeClass, εκτελέστηκε πριν από όλες τις δοκιμαστικές περιπτώσεις
Χρησιμοποιώντας @Before σχολιασμούς, εκτελούνται πριν από κάθε δοκιμαστική περίπτωση
Χρησιμοποιώντας το @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση
Χρησιμοποιώντας @Before σχολιασμούς, εκτελούνται πριν από κάθε δοκιμαστική περίπτωση
Χρησιμοποιώντας το @Test (χρονικό όριο), μπορεί να χρησιμοποιηθεί για την επιβολή χρονικού ορίου σε περίπτωση δοκιμής JUnit4
Χρησιμοποιώντας το @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση
Χρησιμοποιώντας @Before σχολιασμούς, εκτελούνται πριν από κάθε δοκιμαστική περίπτωση
Χρησιμοποιώντας το @Test (αναμένεται), θα ελέγξει για συγκεκριμένη εξαίρεση κατά την εκτέλεση του
Χρησιμοποιώντας το @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση
Χρησιμοποιώντας το @AfterClass, εκτελείται μετά από όλες τις δοκιμαστικές περιπτώσεις
Κατηγορία Assert JUnit
Αυτή η τάξη παρέχει μια πληθώρα μεθόδων διεκδίκησης χρήσιμες στη σύνταξη μιας δοκιμαστικής υπόθεσης. Εάν περάσουν όλες οι δηλώσεις επιβεβαίωσης, τα αποτελέσματα των δοκιμών είναι επιτυχή. Εάν αποτύχει οποιαδήποτε δήλωση επιβεβαίωσης, τα αποτελέσματα της δοκιμής αποτυγχάνουν.
Όπως είδατε νωρίτερα, στον παρακάτω πίνακα περιγράφονται σημαντικές μέθοδοι και περιγραφή Assert:
S.No. | Μέθοδος | Περιγραφή |
---|---|---|
1. | void assertEquals (αναμενόμενο boolean, πραγματικό boolean) | Ελέγχει εάν δύο τιμές είναι ίσες με την ίδια μέθοδο της κλάσης αντικειμένων |
2. | void assertFalse (δυαδική κατάσταση) | η λειτουργικότητα είναι να ελέγξετε ότι μια συνθήκη είναι λανθασμένη. |
3. | void assertNotNull (αντικείμενο αντικειμένου) | Η λειτουργία "assertNotNull" είναι να ελέγξετε ότι ένα αντικείμενο δεν είναι μηδενικό. |
4. | void assertNull (αντικείμενο αντικειμένου) | Η λειτουργία "assertNull" είναι να ελέγξετε ότι ένα αντικείμενο είναι μηδενικό. |
5. | void assertTrue (δυαδική κατάσταση) | Η λειτουργία "assertTrue" είναι να ελέγξετε αν μια συνθήκη είναι αληθής. |
6. | άκυρη αποτυχία () | Εάν θέλετε να ρίξετε οποιοδήποτε σφάλμα ισχυρισμού, έχετε αποτύχει () που οδηγεί πάντα σε αποτυχημένη απόφαση |
7. | void assertSame ([Μήνυμα συμβολοσειράς] | Η λειτουργία "assertSame" είναι να ελέγξετε ότι τα δύο αντικείμενα αναφέρονται στο ίδιο αντικείμενο. |
8. | void assertNotSame ([Μήνυμα συμβολοσειράς] | Η λειτουργία "assertNotSame" είναι να ελέγξετε ότι τα δύο αντικείμενα δεν αναφέρονται στο ίδιο αντικείμενο. |
Κατηγορία δοκιμαστικών περιπτώσεων JUnit
Για να εκτελέσετε πολλές δοκιμές, η τάξη TestCase είναι διαθέσιμη στα πακέτα org.junit.TestCase . Ο σχολιασμός @Test λέει στην JUnit ότι αυτή η δημόσια κενή μέθοδος (Test Case εδώ) στην οποία είναι προσαρτημένη μπορεί να εκτελεστεί ως δοκιμαστική υπόθεση.
Στον παρακάτω πίνακα εμφανίζονται ορισμένες σημαντικές μέθοδοι που είναι διαθέσιμες στην τάξη org.junit.TestCase :
S.No. | Μέθοδος | Περιγραφή |
---|---|---|
1. | int countTestCases () | Αυτή η μέθοδος χρησιμοποιείται για τον υπολογισμό του αριθμού των δοκιμαστικών περιπτώσεων που εκτελούνται με τη μέθοδο Run (TestResult tr) |
2. | TestResult createResult () | Αυτή η μέθοδος χρησιμοποιείται για τη δημιουργία ενός αντικειμένου TestResult . |
3. | Συμβολοσειρά getName () | Αυτή η μέθοδος επιστρέφει μια συμβολοσειρά που δεν είναι τίποτα άλλο από ένα TestCase . |
4. | Δοκιμή TestResult () | Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση μιας δοκιμής που επιστρέφει ένα αντικείμενο TestResult |
5. | άκυρη εκτέλεση (αποτέλεσμα TestResult) | Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση δοκιμής με αντικείμενο TestResult που δεν επιστρέφει τίποτα. |
6. | void setName (Όνομα συμβολοσειράς) | Αυτή η μέθοδος χρησιμοποιείται για να ορίσετε ένα όνομα TestCase. |
7. | άκυρο σετ () | Αυτή η μέθοδος χρησιμοποιείται για τη σύνταξη κώδικα συσχέτισης πόρων. π.χ. Δημιουργία σύνδεσης βάσης δεδομένων. |
8. | άκυρο δάκρυDown () | Αυτή η μέθοδος χρησιμοποιείται για τη σύνταξη κώδικα απελευθέρωσης πόρων. π.χ. Απελευθέρωση σύνδεσης βάσης δεδομένων μετά την εκτέλεση της συναλλαγής. |
Τάξη JUnit TestResult
Όταν εκτελείτε μια δοκιμή, επιστρέφει ένα αποτέλεσμα (με τη μορφή αντικειμένου TestResult ). Αυτό το αντικείμενο TestResult μπορεί να χρησιμοποιηθεί για την ανάλυση του προκύπτοντος αντικειμένου. Αυτό το αποτέλεσμα της δοκιμής μπορεί να είναι είτε αποτυχημένο είτε επιτυχές. Δείτε τον παρακάτω πίνακα για σημαντικές μεθόδους που χρησιμοποιούνται στην κατηγορία org.junit.TestResult:S.No. | Μέθοδος | Περιγραφή |
---|---|---|
1. | void addError (Δοκιμή δοκιμής, Throwable t) | Αυτή η μέθοδος χρησιμοποιείται εάν απαιτείται προσθήκη σφάλματος στη δοκιμή. |
2. | void addFailure (Δοκιμή δοκιμής, AssertionFailedError t) | Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να προσθέσετε μια αποτυχία στη λίστα των αποτυχιών. |
3. | void endTest (Δοκιμή δοκιμής) | Αυτή η μέθοδος χρησιμοποιείται για να ειδοποιήσει ότι εκτελείται μια δοκιμή (ολοκληρώθηκε) |
4. | int errorCount () | Αυτή η μέθοδος χρησιμοποιείται για να εντοπιστεί το σφάλμα κατά την εκτέλεση της δοκιμής. |
5. | Σφάλματα απαρίθμησης | Αυτή η μέθοδος επιστρέφει απλώς μια συλλογή (απαρίθμηση εδώ) σφαλμάτων. |
6. | int FailCount () | Αυτή η μέθοδος χρησιμοποιείται για τον υπολογισμό των σφαλμάτων που εντοπίστηκαν κατά την εκτέλεση της δοκιμής |
7. | άκυρη εκτέλεση (TestCase test) | Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση μιας υπόθεσης δοκιμής. |
8. | int runCount () | Αυτή η μέθοδος μετρά απλώς το εκτελεσθέν τεστ. |
9. | void startTest (Δοκιμή δοκιμής) | Αυτή η μέθοδος χρησιμοποιείται για να ειδοποιήσει ότι ξεκινά μια δοκιμή. |
10. | άκυρη στάση () | Αυτή η μέθοδος χρησιμοποιείται για να δοκιμαστεί η εκτέλεση για διακοπή. |
JUnit Test Suite Class
Εάν θέλετε να εκτελέσετε πολλαπλές δοκιμές με συγκεκριμένη σειρά, μπορεί να γίνει συνδυάζοντας όλες τις δοκιμές σε ένα μέρος. Αυτό το μέρος ονομάζεται ως δοκιμαστικές σουίτες.
Δείτε τον παρακάτω πίνακα για σημαντικές μεθόδους που χρησιμοποιούνται στην κατηγορία org.junit.TestSuite :
S.No. | Μέθοδος | Περιγραφή |
---|---|---|
1. | void addTest (Δοκιμή δοκιμής) | Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να προσθέσετε ένα τεστ στη σουίτα. |
2. | void addTestSuite (Η κλάση επεκτείνει το TestCase> testClass) | Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να καθορίσετε την τάξη ενώ προσθέτετε ένα τεστ στη σουίτα. |
3. | int countTestCases () | Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να μετρήσετε τον αριθμό των δοκιμαστικών περιπτώσεων. |
4. | Συμβολοσειρά getName () | Αυτή η μέθοδος χρησιμοποιείται για να πάρει το όνομα της δοκιμαστικής σουίτας. |
5. | άκυρη εκτέλεση (αποτέλεσμα TestResult) | Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση δοκιμής και τη συλλογή αποτελεσμάτων δοκιμής σε αντικείμενο TestResult . |
6. | void setName (Όνομα συμβολοσειράς) | Αυτή η μέθοδος χρησιμοποιείται για να ορίσετε το όνομα του TestSuite . |
7. | Δοκιμή δοκιμής (int index) | Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να επιστρέψετε το τεστ σε δεδομένο ευρετήριο. |
8. | int testCount () | Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να επιστρέψετε έναν αριθμό δοκιμών στο Suite. |
9. | προειδοποίηση στατικής δοκιμής (μήνυμα συμβολοσειράς) | Αυτή η μέθοδος επιστρέφει μια δοκιμή που θα αποτύχει και θα καταγράψει ένα προειδοποιητικό μήνυμα. |
Περίληψη:
- Το JUnit παρέχει ένα φορητό API, το οποίο παρέχει όλες τις σημαντικές τάξεις και σχολιασμούς που είναι χρήσιμες για τη σύνταξη μιας δοκιμασίας μονάδας.
- Μαθήματα που είναι πολύ χρήσιμα κατά τη σύνταξη μιας δοκιμαστικής θήκης
- org.junit.Asert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- λίστα με σημαντικούς και συχνά χρησιμοποιούμενους σχολιασμούς
@Πριν
@Πριν το μάθημα
@Μετά
@Μετά το μάθημα
@Δοκιμή
@Αγνοώ