Η JUnit Assertions Class περιέχει μια συλλογή στατικών μεθόδων που σας επιτρέπουν να διεξάγετε δοκιμές μονάδας. Οι ισχυρισμοί είναι ένα από τα βασικά χαρακτηριστικά του JUnit. Αυτή η τάξη έχει πάνω από πενήντα διαφορετικές μεθόδους. Ορισμένες δοκιμές κλάσεων Assertions θα αποτύχουν εάν μια συνθήκη είναι αληθής, ενώ άλλες θα αποτύχουν εάν μια συνθήκη είναι ψευδής.
Η κλάση Assertions έχει επίσης πολλές υπερφορτωμένες μεθόδους. Κάθε μέθοδος διαβεβαίωσης έχει τουλάχιστον δύο υπερφορτωμένες μεθόδους. Ανακαλύψτε μερικές από τις πιο δημοφιλείς μεθόδους κλάσεων Assertions και μάθετε πώς να τις χρησιμοποιήσετε για την εκτέλεση δοκιμών μονάδας.
Η μέθοδος assertEquals
Η μέθοδος JUnit 5 assertEquals έχει πάνω από δέκα παραλλαγές. Αυτή η μέθοδος είναι μια από τις πιο δημοφιλείς μεθόδους κλάσης Assertions. Μια παραλλαγή της μεθόδου assertEquals παίρνει μια αναμενόμενη τιμή και τη συνάρτηση που θέλετε να αξιολογήσετε (πραγματική τιμή). Μια δεύτερη κύρια παραλλαγή παίρνει ένα επιπλέον τρίτο όρισμα. Αυτό είναι ένα μήνυμα σφάλματος που θα εμφανιστεί εάν το Δοκιμή μονάδας JUnit αποτυγχάνει.
Η υπερφόρτωση της μεθόδου assertEquals συμβαίνει με διαφορετικούς τύπους δεδομένων. Ορισμένες μέθοδοι υπερφόρτωσης assertEquals λαμβάνουν ένα τέταρτο όρισμα που ονομάζεται δέλτα. Άλλες εκδόσεις αντικαθιστούν τη συμβολοσειρά αποτυχίας με μια λειτουργική διεπαφή προμηθευτή, με τη μορφή α έκφραση λάμδα.
ΙσχυρισμοίΜέθοδοι Java Class
πακέτο com.program;
δημόσιοτάξηΜέθοδοι ισχυρισμών{
δημόσιοστατικόςενθτετράγωνο(ενθ αριθμός){
ΕΠΙΣΤΡΟΦΗ num * num;
}
}
Η παραπάνω κλάση Java AssertionMethods έχει μια ενιαία μέθοδο που ονομάζεται τετράγωνο. Η μέθοδος τετραγώνου παίρνει μια ακέραια τιμή και επιστρέφει το τετράγωνό της. Για να ελέγξετε τη μέθοδο τετραγώνου και οποιαδήποτε μελλοντική μέθοδο από την κλάση AssertionMethods, θα χρειαστεί να δημιουργήσετε μια περίπτωση δοκιμής JUnit.
The AssertionsMethodsTest JUnit Test Case
πακέτο com.program;
εισαγωγήστατικόςorg.junit.Διεκδικώ.assertEquals;
εισαγωγήστατικόςorg.junit.Ζεύς.api.Ισχυρισμοί.*;εισαγωγήorg.junit.Ζεύς.api.Δοκιμή;
τάξηΔιαβεβαιώσειςΜέθοδοιΔοκιμή{
@Δοκιμή
κενόςΤετράγωνο δοκιμής(){
διεκδικώ Ίσο(25, Μέθοδοι επιβεβαίωσης.τετράγωνο(5));
assertEquals (36, AssertionMethods.square (6), "Οι τετράγωνες τιμές σας δεν ταιριάζουν.");
assertEquals (49, AssertionMethods.square (7), () ->"Οι τετράγωνες τιμές σας δεν ταιριάζουν.");
}
}
Η μέθοδος testSquare() χρησιμοποιεί τρεις παραλλαγές της assertEquals() για να ελέγξει τη μέθοδο Square(). Κάθε assertEquals() είναι επιτυχημένο, καθώς όλες οι αναμενόμενες τιμές ταιριάζουν με τις πραγματικές τιμές που επιστρέφονται από τη μέθοδο Square().
Η μέθοδος assertNull
Η κλάση JUnit Assertions έχει ακριβώς τρεις μεθόδους assertNull. Κάθε μία από αυτές τις μεθόδους παίρνει ένα ή περισσότερα ορίσματα και βεβαιώνει εάν το δεδομένο αντικείμενο είναι μηδενικό. Εάν ένα δεδομένο αντικείμενο δεν είναι μηδενικό, τότε η δοκιμή θα αποτύχει.
@Δοκιμή
δημόσιοκενόςtestStringValue(){
Σειρά stringValue = μηδενικό;
assertNull (stringValue);
assertNull (stringValue, "Η τιμή συμβολοσειράς σας δεν είναι μηδενική");
assertNull (stringValue, () ->"Η τιμή συμβολοσειράς σας δεν είναι μηδενική");
}
Η πρώτη μέθοδος assertNull() παίρνει ένα αντικείμενο συμβολοσειράς και ελέγχει αν είναι null. Η δεύτερη μέθοδος assertNull() παίρνει ένα αντικείμενο συμβολοσειράς και ένα μήνυμα συμβολοσειράς για να εμφανιστεί εάν η δοκιμή αποτύχει. Η τρίτη και τελευταία μέθοδος assertNull() παίρνει το αντικείμενο που θέλετε να αξιολογήσετε και μια λειτουργική διεπαφή προμηθευτή.
Στην παραπάνω περίπτωση δοκιμής, η διεπαφή του προμηθευτή λειτουργεί ως στόχος εκχώρησης για μια έκφραση λάμδα. Η έκφραση λάμδα δημιουργεί ένα μήνυμα σφάλματος εάν η δοκιμή αποτύχει.
Η μέθοδος assertTrue
Η μέθοδος assertTrue() έχει έξι παραλλαγές. Κάθε μέθοδος βεβαιώνει εάν μια δεδομένη συνθήκη είναι αληθής. Εάν μια συνθήκη assertTrue() είναι ψευδής, η δοκιμή θα αποτύχει.
@Δοκιμή
κενόςtestEven Numbers(){
ενθ num1 = 10;
ενθ num2 = 16;
ενθ num3 = 26;
assertTrue (αριθμός 1 < num2);
assertTrue (αριθμός 3 > num2, "Η κατάστασή σας δεν είναι αληθινή.");
assertTrue (αριθμός 1 < num3, () ->" Η κατάστασή σας δεν είναι αληθινή.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Η τιμή σας δεν είναι ζυγός αριθμός.");
assertTrue(() -> num3%2 == 0, () ->"Η τιμή σας δεν είναι ζυγός αριθμός.");
}
Η μέθοδος testEvenNumbers() δείχνει πώς να χρησιμοποιήσετε και τις έξι μεθόδους assertTrue(). Όλες οι παραπάνω μέθοδοι είναι αληθείς, επομένως, αυτή η δοκιμή μονάδας εκτελείται χωρίς αποτυχία ή σφάλμα.
- assertTrue (Boolean condition): αυτή η μέθοδος παίρνει μια Boolean συνθήκη και βεβαιώνει εάν είναι αληθής. Το παράδειγμα αυτής της μεθόδου στον παραπάνω κώδικα βεβαιώνει εάν η πρώτη ακέραια τιμή είναι μικρότερη από τη δεύτερη.
- assertTrue (Συνθήκη Boole, μήνυμα συμβολοσειράς): αυτή η μέθοδος απαιτεί μια συνθήκη Boole για δοκιμή και μια συμβολοσειρά για να εμφανιστεί εάν είναι ψευδής.
- assertTrue (Boolean condition, Supplier
messageSupplier): αυτή η μέθοδος παίρνει μια λειτουργική διεπαφή Boolean και Supplier, ως έκφραση λάμδα. Ο προμηθευτής μηνυμάτων περιέχει μια συμβολοσειρά που εμφανίζεται εάν η συνθήκη Boolean είναι ψευδής. - assertTrue (BooleanSupplier booleanSupplier): αυτή η μέθοδος παίρνει μια λειτουργική διεπαφή BooleanSupplier, με τη μορφή μιας έκφρασης λάμδα που αξιολογείται ως true ή false. Το παράδειγμα αυτής της μεθόδου στον κώδικα χρησιμοποιεί μια έκφραση λάμδα. Δοκιμάζει το υπόλοιπο του πρώτου ακέραιου αριθμού διαιρούμενο με δύο για να προσδιορίσει αν είναι ζυγός ή περιττός.
- assertTrue (BooleanSupplier booleanSupplier, μήνυμα συμβολοσειράς): αυτή η μέθοδος παίρνει μια λειτουργική διεπαφή BooleanSupplier με τη μορφή έκφρασης λάμδα. Χρειάζεται επίσης ένα μήνυμα συμβολοσειράς για να εκτυπωθεί εάν το BooleanSupier δεν είναι αληθές.
- assertTrue (BooleanSupplier booleanSupplier, Supplier
messageSupplier): αυτή η μέθοδος απαιτεί μια λειτουργική διεπαφή BooleanSupplier για επιβεβαίωση. Χρειάζεται επίσης μια λειτουργική διεπαφή προμηθευτή, η οποία είναι μια έκφραση λάμδα που θα εκτυπώσει μια τιμή συμβολοσειράς εάν η δοκιμή αποτύχει.
Η μέθοδος assertFalse
Η μέθοδος assertFalse() είναι το αντίθετο της μεθόδου assertTrue(). Αυτή η μέθοδος αξιολογεί μια δεδομένη συνθήκη για να δει αν είναι ψευδής. Εάν μια δεδομένη συνθήκη είναι αληθής, τότε η δοκιμή assertFalse() θα αποτύχει. Η μέθοδος assertFalse() έχει επίσης έξι παραλλαγές που δέχονται τα ίδια ορίσματα με τα αντίστοιχα της assertTrue().
@Δοκιμή
κενόςtestNotEven Numbers(){
ενθ num1 = 11;
ενθ num2 = 17;
ενθ num3 = 27;
assertFalse (αριθμός 2 < num1);
assertFalse (αριθμός 2 > num3, " Η κατάστασή σας δεν είναι ψευδής.");
assertFalse (αριθμός 3 < num1, () ->" Η κατάστασή σας δεν είναι ψευδής.");
assertFalse(() -> num1%2 == 0);
assertFalse(() -> num2%2 == 0, "Η τιμή σας είναι ένας ζυγός αριθμός.");
assertFalse(() -> num3%2 == 0, () ->"Η τιμή σας είναι ένας ζυγός αριθμός.");
}
Οι έξι μέθοδοι assertFalse() στη μέθοδο testNotEvenNumbers() καταλήγουν όλες σε false, πράγμα που σημαίνει ότι οι δοκιμές assertFalse() είναι επιτυχείς.
Τα οφέλη της δοκιμής μονάδας
Η δοκιμή μονάδων είναι αναπόσπαστο μέρος της διαδικασίας ανάπτυξης λογισμικού. Τα μεγάλα έργα λογισμικού αποτυγχάνουν για διάφορους λόγους, που κυμαίνονται από τις ομάδες που εργάζονται σε αυτά μέχρι τις προσεγγίσεις ανάπτυξης.
Ο σκοπός της δοκιμής μονάδας είναι να εξαλειφθεί η αστοχία λογισμικού παρέχοντας έγκαιρη ανίχνευση σφαλμάτων. Αυτό απαιτεί από τις ομάδες να αναπτύξουν σαφείς προδιαγραφές, να βελτιώσουν το σχεδιασμό λογισμικού μέσω τεκμηρίωσης σφαλμάτων και να παρέχουν υποστήριξη για τη συντήρηση λογισμικού.
Η δοκιμή μονάδων δεν είναι η μόνη προσέγγιση δοκιμών λογισμικού που πρέπει να εφαρμόσετε στον κύκλο ζωής της ανάπτυξής σας, είναι απλώς ένα πολύ καλό μέρος για να ξεκινήσετε.