Αυτό το σεμινάριο εξηγεί πώς να αγνοείτε τις περιπτώσεις δοκιμής στο JUnit με παραδείγματα. Θα μάθετε να χρησιμοποιείτε το @Ignore στο JUnit 4 & το @Disabled Annotation στο JUnit 5:
Στο προηγούμενο σεμινάριο, καταλάβαμε τι είναι το API που ονομάζεται Annotation, τι κάνει και είδαμε επίσης βασικά παραδείγματα σχετικά με τον τρόπο χρήσης των annotations του κύκλου ζωής, τις προτεραιότητες που έχουν κατά την εκτέλεση μιας περίπτωσης δοκιμής.
Ας προσπαθήσουμε να ρίξουμε φως στις καταστάσεις κατά τις οποίες ανάγκη όχι τρέχει ή είναι όχι υποτιθέμενο για να εκτελέσετε όλες τις περιπτώσεις δοκιμών. Θα μάθουμε να αγνοούμε τις περιπτώσεις δοκιμών στο JUnit.
JUnit Αγνοήστε τις περιπτώσεις δοκιμών
Θα μπορούσαν να υπάρχουν ορισμένες περιπτώσεις δοκιμών που δεν εκτελούνται επειδή μπορεί να μην αφορούν ορισμένες αλλαγές στον κώδικα ή ο κώδικας για τις περιπτώσεις δοκιμών μπορεί να είναι ακόμη υπό ανάπτυξη, οπότε αποφεύγουμε την εκτέλεσή τους.
Σε τέτοιες περιπτώσεις, μπορεί να χρειαστεί να εκτελέσουμε ένα σύνολο περιπτώσεων δοκιμών παραλείποντας μερικές άλλες. Τι είναι λοιπόν αυτό που μας παρέχει το JUnit 4, καθώς και το JUnit 5, ώστε να είμαστε σε θέση να εκτελέσουμε μόνο μερικές περιπτώσεις δοκιμών αγνοώντας ή απενεργοποιώντας ή ονομάζοντας το "παράλειψη" μερικές από τις περιπτώσεις δοκιμών;
Ευτυχώς, έχουμε @Ignore σχολιασμός για JUnit 4 για να παραλείψετε μια περίπτωση δοκιμής ενώ @Disabled σχολιασμός για JUnit 5 να κάνει το ίδιο.
JUnit 4 - Σχόλιο @Ignore
- Ο σχολιασμός @Ignore του JUnit 4 μπορεί να εφαρμοστεί για μια μέθοδο δοκιμής, για να παραλείψετε την εκτέλεσή της. Σε αυτή την περίπτωση, πρέπει να χρησιμοποιήσετε τον σχολιασμό @Ignore με τον σχολιασμό @Test για μια μέθοδο δοκιμής που θέλετε να παραλείψετε.
- Ο σχολιασμός θα μπορούσε επίσης να εφαρμοστεί στην κλάση δοκιμής, για να παραλείψετε όλες τις περιπτώσεις δοκιμής κάτω από μια κλάση. Σε αυτή την περίπτωση, πρέπει να χρησιμοποιήσετε το @Ignore σε επίπεδο κλάσης.
Ο κώδικας χρειάζεται να εισαχθεί το πακέτο org.junit.Ignore για να λειτουργήσει το @Ignore. Ας δείξουμε πώς μπορούμε να παραλείψουμε μια μέθοδο δοκιμής σε μια δοκιμή JUnit 4. Θα τροποποιήσουμε το JUnitProgram.java για να παραλείψουμε την πρώτη μέθοδο δοκιμής.
Το απόσπασμα κώδικα είναι:
@Ignore @Test public void test_JUnit1() { System.out.println("Αυτό είναι το testcase test_JUnit1() σε αυτή την κλάση"); } @Test public void test_JUnit2() { System.out.println("Αυτό είναι το testcase test_JUnit2() σε αυτή την κλάση"); } @Test public void test_JUnit3() { System.out.println("Αυτό είναι το testcase test_JUnit3() σε αυτή την κλάση"); }
Κατά την εκτέλεση του αρχείου κλάσης, η test_JUnit1() παραλείπεται κατά τη διάρκεια της εκτέλεσης. Εκτός αυτού, η μέθοδος που σχολιάζεται με @Ignore και όλες οι άλλες μέθοδοι δοκιμής εκτελούνται όπως αναμένεται.
Η προκύπτουσα καταμέτρηση εκτέλεσης δείχνει 3/3 περιπτώσεις δοκιμών και 1 περίπτωση δοκιμής παραλείπεται. Η καταμέτρηση εκτέλεσης έδειξε 3/3 επειδή ακόμη και η περίπτωση δοκιμής που παραλείφθηκε προσπάθησε να εκτελεστεί.
Το παρακάτω στιγμιότυπο οθόνης του παραθύρου της κονσόλας αποδεικνύει το ίδιο.
@Ignore Annotation με παράμετρο Reason
Υπάρχει επίσης μια παραλλαγή της σημείωσης @Ignore. Η σημείωση δέχεται ένα μόνο όρισμα με μια τιμή συμβολοσειράς, η οποία είναι ο λόγος για την παράλειψη της δοκιμής.
Ας επιδείξουμε αυτή την παραλλαγή του σχολίου @Ignore.
Το απόσπασμα κώδικα έχει ως εξής:
@Ignore("το testcase είναι υπό ανάπτυξη") @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
Το παράθυρο της κονσόλας εμφανίζει το ίδιο αποτέλεσμα όπως ήταν χωρίς την αιτία που πέρασε στο σχόλιο @Ignore.
Τώρα, ας δούμε πώς θα μπορούσαν να απενεργοποιηθούν όλες οι δοκιμές που ανήκουν σε μια κλάση. Θα ενημερώσουμε τώρα την επισήμανση @Ignore σε επίπεδο κλάσης για το JUnitProgram.java
Το απόσπασμα κώδικα είναι όπως φαίνεται παρακάτω:
import org.junit.AfterClass; @Ignore("the testcase is under development") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("This is the preClass() method that runs one time before the class"); } @Before public void setUp() { System.out.println("_______________________________________________________\n"); System.out.println("This is the setUp() method thatτρέχει πριν από κάθε testcase"); } @Test public void test_JUnit1() { System.out.println("Αυτή είναι η testcase test_JUnit1() σε αυτή την κλάση"); }
Μετά την εκτέλεση του αρχείου κλάσης, το κονσόλα δείχνει τίποτα, και το Εκτέλεση μετρήστε κάτω από την καρτέλα JUnit δείχνει 1 μάθημα παραλείφθηκε από 1 μάθημα .
Ακολουθεί το στιγμιότυπο οθόνης του παραθύρου της κονσόλας:
JUnit 5 - Σχόλιο @Disabled
Ο σχολιασμός @Disabled στο JUnit 5 λειτουργεί παρόμοια με τον σχολιασμό @Ignore στο JUnit 4.
- Μπορείτε να απενεργοποιήσετε ή να παραλείψετε την εκτέλεση μιας μεθόδου δοκιμής ή μιας ομάδας δοκιμών εφαρμόζοντας τον σχολιασμό στο επίπεδο δοκιμής.
- Ή όλες οι δοκιμές θα μπορούσαν να παραλειφθούν με την εφαρμογή του σχολίου @Disabled στο επίπεδο της κλάσης αντί της εφαρμογής του στο επίπεδο της μεθόδου δοκιμής.
Όπως το @Ignore, ένας λόγος θα μπορούσε επίσης να περάσει για το @Disabled, ώστε οποιοσδήποτε προγραμματιστής ή επιχειρηματικός αναλυτής να γνωρίζει γιατί παραλείφθηκε μια συγκεκριμένη περίπτωση δοκιμής. Η παράμετρος παραμένει προαιρετική όπως και στην περίπτωση του @Ignore.
( Σημείωση: Θα αποφύγουμε να παρουσιάσουμε τον σχολιασμό @Disabled μέσω ενός πραγματικού κώδικα για να αποφύγουμε την επανάληψη, καθώς ακολουθεί τον ίδιο ακριβώς τρόπο που ακολουθεί ο σχολιασμός @Ignore στο JUnit 4.)
Η μόνη διαφορά που θα παρατηρήσετε στην περίπτωση των @Ignore Vs @Disabled είναι ότι όταν ο σχολιασμός εφαρμόζεται σε επίπεδο κλάσης, μετά την εκτέλεση του αρχείου κλάσης JUnit, ο αριθμός Run στην περίπτωση των JUnit 4 , δείχνει 1/1 τάξη που παραλείφθηκε.
Ως εκ τούτου, ένα παρέχεται η μέτρηση της κλάσης που παραλείπεται ενώ στην περίπτωση της JUnit 5 δείχνει ότι 3/3 περιπτώσεις δοκιμών παραλείπονται, λαμβάνοντας υπόψη ότι τρεις μέθοδοι δοκιμής παραλείφθηκαν από τις συνολικά τρεις μεθόδους δοκιμής της κλάσης.
Ως εκ τούτου, στο ορατότητα του αριθμού των περιπτώσεων δοκιμής που παραλείπονται , JUnit 5 κάνει μια ελαφρώς καλύτερη εργασία σε σύγκριση με το JUnit 4.
Συμπέρασμα
Σε αυτό το σεμινάριο, μάθαμε ποιες είναι οι περιπτώσεις στις οποίες μπορεί να χρειαστεί να παραλείψουμε την εκτέλεση ορισμένων περιπτώσεων δοκιμής. Μάθαμε επίσης πώς να παραλείπουμε ορισμένες περιπτώσεις δοκιμής τόσο στο JUnit 4 όσο και στο JUnit 5.