JUnit Test Cases @Before @BeforeClass Σχολιασμός

Πίνακας περιεχομένων:

Anonim

Το JUnit είναι το πιο δημοφιλές πλαίσιο δοκιμών μονάδων στην Java. Συνιστάται ρητά για δοκιμή μονάδας. Το JUnit δεν απαιτεί διακομιστή για τη δοκιμή εφαρμογών ιστού, γεγονός που καθιστά τη διαδικασία δοκιμών γρήγορη.

Το πλαίσιο JUnit επιτρέπει επίσης γρήγορη και εύκολη δημιουργία δοκιμαστικών περιπτώσεων και δεδομένων δοκιμής. Το πακέτο org.Junit αποτελείται από πολλές διεπαφές και τάξεις για JUnit Testing όπως Test, Assert, After, Before κ.λπ.

Τι είναι το δοκιμαστικό προσάρτημα

Προτού καταλάβουμε τι είναι ένα δοκιμαστικό προσάρτημα, ας μελετήσουμε τον παρακάτω κώδικα

Αυτός ο κωδικός έχει σχεδιαστεί για την εκτέλεση δύο δοκιμαστικών περιπτώσεων σε ένα απλό αρχείο.

δημόσια τάξη OutputFileTest {έξοδος ιδιωτικού αρχείουέξοδος = νέο αρχείο (…);έξοδος.delete ();public void testFile1 () {// Κωδικός για επαλήθευση της υπόθεσης δοκιμής 1}έξοδος.delete ();έξοδος = νέο αρχείο (…);public void testFile2 () {// Κωδικός για επαλήθευση της δοκιμαστικής περίπτωσης 2}έξοδος.delete ();}

Λίγα ζητήματα εδώ

  • Ο κωδικός δεν είναι αναγνώσιμος
  • Ο κωδικός δεν είναι εύκολο να διατηρηθεί.
  • Όταν η δοκιμαστική σουίτα είναι περίπλοκη, ο κώδικας θα μπορούσε να περιέχει λογικά ζητήματα.

Συγκρίνετε τον ίδιο κωδικό χρησιμοποιώντας το JUnit

δημόσια τάξη OutputFileTest{έξοδος ιδιωτικού αρχείου@ Πριν από το δημόσιο void createOutputFile (){έξοδος = νέο αρχείο (…);}@ Μετά το δημόσιο άκυρο deleteOutputFile (){έξοδος.delete ();}@Test public void testFile1 (){// κωδικός για το σκοπό της δοκιμαστικής περίπτωσης}@Test public void testFile2 (){// κωδικός για το σκοπό της δοκιμαστικής περίπτωσης}}

Ο κωδικός είναι πολύ πιο αναγνώσιμος και διατηρήσιμος. Η παραπάνω δομή κώδικα είναι ένα δοκιμαστικό προσάρτημα.

Ένα δοκιμαστικό προσάρτημα είναι ένα πλαίσιο όπου εκτελείται μια δοκιμαστική θήκη. Συνήθως, τα φωτιστικά δοκιμής περιλαμβάνουν:

  • Αντικείμενα ή πόροι που είναι διαθέσιμοι για οποιαδήποτε δοκιμαστική περίπτωση.
  • Απαιτούμενες δραστηριότητες που καθιστούν διαθέσιμα αυτά τα αντικείμενα / πόρους.
  • Αυτές οι δραστηριότητες είναι
    1. κατανομή ( ρύθμιση )
    2. απαλλαγή ( κατακράτηση ).

Ρύθμιση και Teardown

  • Συνήθως, υπάρχουν μερικές επαναλαμβανόμενες εργασίες που πρέπει να γίνουν πριν από κάθε δοκιμαστική περίπτωση. Παράδειγμα: δημιουργία σύνδεσης βάσης δεδομένων.
  • Ομοίως, στο τέλος κάθε δοκιμαστικής περίπτωσης, ενδέχεται να υπάρχουν κάποιες επαναλαμβανόμενες εργασίες. Παράδειγμα: καθαρισμός μόλις τελειώσει η εκτέλεση της δοκιμής.
  • Το JUnit παρέχει σχολιασμούς που βοηθούν στη ρύθμιση και την κατάρρευση. Διασφαλίζει την απελευθέρωση πόρων και το σύστημα δοκιμών είναι σε κατάσταση ετοιμότητας για την επόμενη δοκιμαστική περίπτωση.

Αυτοί οι σχολιασμοί συζητούνται παρακάτω-

Ρύθμιση

@Πριν από τον σχολιασμό χρησιμοποιείται σε μια μέθοδο που περιέχει κώδικα Java για εκτέλεση πριν από κάθε δοκιμαστική περίπτωση. δηλαδή τρέχει πριν από κάθε εκτέλεση της δοκιμής.

Teardown (ανεξάρτητα από την ετυμηγορία)

Μετά τον σχολιασμό χρησιμοποιείται μια μέθοδος που περιέχει κώδικα java για εκτέλεση μετά από κάθε δοκιμαστική περίπτωση. Αυτές οι μέθοδοι θα εκτελεστούν ακόμη και αν υπάρξουν εξαιρέσεις στην υπόθεση δοκιμής ή σε περίπτωση αστοχίας ισχυρισμού.

Σημείωση:

  • Επιτρέπεται να υπάρχει οποιοσδήποτε αριθμός σχολιασμών που αναφέρονται παραπάνω.
  • Όλες οι μέθοδοι που επισημαίνονται με το @Before θα εκτελούνται πριν από κάθε δοκιμαστική περίπτωση, αλλά ενδέχεται να εκτελούνται με οποιαδήποτε σειρά.
  • Μπορείτε να κληρονομήσετε το @Before και το @Μετά από μεθόδους από μια σούπερ τάξη, η εκτέλεση έχει ως εξής: Πρόκειται για μια τυπική διαδικασία εκτέλεσης στο JUnit.
  1. Εκτελέστε τις μεθόδους @Before στο superclass
  2. Εκτελέστε τις μεθόδους @Before σε αυτήν την τάξη
  3. Εκτελέστε μια μέθοδο @Test σε αυτήν την τάξη
  4. Εκτελέστε τις μεθόδους @After σε αυτήν την τάξη
  5. Εκτελέστε τις μεθόδους @After στο superclass

Παράδειγμα: Δημιουργία τάξης με αρχείο ως δοκιμαστικό προσάρτημα

δημόσια τάξη OutputFileTest{έξοδος ιδιωτικού αρχείου@ Πριν από το δημόσιο void createOutputFile (){έξοδος = νέο αρχείο (…);}@ Μετά το δημόσιο άκυρο deleteOutputFile (){έξοδος.delete ();}@Test public void testFile1 (){// κωδικός για το σκοπό της δοκιμαστικής περίπτωσης}@Test public void testFile2 (){// κωδικός για το σκοπό της δοκιμαστικής περίπτωσης}}

Στο παραπάνω παράδειγμα η αλυσίδα εκτέλεσης θα έχει ως εξής-

  1. createOutputFile ()
  2. testFile1 ()
  3. deleteOutputFile ()
  4. createOutputFile ()
  5. testFile2 ()
  6. deleteOutputFile ()

Υπόθεση: το testFile1 () εκτελείται πριν από το testFile2 () - το οποίο δεν είναι εγγυημένο.

Εγκατάσταση μόνο

  • Είναι δυνατή η εκτέλεση μιας μεθόδου μόνο μία φορά για ολόκληρη την τάξη δοκιμής πριν από την εκτέλεση οποιασδήποτε από τις δοκιμές και πριν από οποιαδήποτε μέθοδο @Before
  • Το "Μόνο ρύθμιση μόνο" είναι χρήσιμο για την εκκίνηση διακομιστών, το άνοιγμα επικοινωνιών κ.λπ. Είναι χρονοβόρο να κλείσετε και να ανοίξετε ξανά πόρους για κάθε δοκιμή.
  • Αυτό μπορεί να γίνει χρησιμοποιώντας τον σχολιασμό @BeforeClass
@BeforeClass public static void Method_Name () {// κωδικός ρύθμισης τάξης εδώ}

Μόλις καταρρεύσει

  • Παρόμοια με τη ρύθμιση μόνο μία φορά, είναι επίσης διαθέσιμη μια μέθοδος καθαρισμού μόνο. Τρέχει μετά την εκτέλεση όλων των μεθόδων δοκιμαστικών περιπτώσεων και μετά την ολοκλήρωση σχολιασμών.
  • Είναι χρήσιμο για διακοπή διακομιστών, κλείσιμο συνδέσμων επικοινωνίας κ.λπ.
  • Αυτό μπορεί να γίνει χρησιμοποιώντας τον σχολιασμό @AfterClass
@AfterClass δημόσιο στατικό κενό Μέθοδος Όνομα (){// κωδικός καθαρισμού τάξης εδώ}

JUnit Test Suites

Αν θέλουμε να εκτελέσουμε πολλαπλές δοκιμές με συγκεκριμένη σειρά, μπορεί να γίνει συνδυάζοντας όλες τις δοκιμές σε ένα μέρος. Αυτό το μέρος ονομάζεται ως δοκιμαστικές σουίτες. Περισσότερες λεπτομέρειες σχετικά με το πώς να εκτελέσετε τις δοκιμαστικές σουίτες και πώς χρησιμοποιείται στο JUnit θα καλυφθούν σε αυτό το σεμινάριο.

Junit Test Runner

Το JUnit παρέχει ένα εργαλείο για την εκτέλεση των δοκιμαστικών σας περιπτώσεων.

  • Η κλάση JUnitCore χρησιμοποιείται για την εκτέλεση αυτών των δοκιμών.
  • Μια μέθοδος που ονομάζεται runClasses παρέχεται από το org.junit.runner.JUnitCore, χρησιμοποιείται για την εκτέλεση μίας ή περισσότερων δοκιμαστικών τάξεων.
  • Ο τύπος επιστροφής αυτής της μεθόδου είναι το αντικείμενο Result ( org.junit.runner.Result ), το οποίο χρησιμοποιείται για την πρόσβαση σε πληροφορίες σχετικά με τις δοκιμές. Δείτε το παρακάτω παράδειγμα κώδικα για περισσότερη σαφήνεια.
δοκιμή δημόσιας τάξης {Δημόσιο στατικό κενό (String [] args) {Αποτέλεσμα αποτελέσματος = JUnitCore.runClasses (CreateAndSetName.class);για (Αποτυχία αποτυχίας: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println (result.wasSuccessful ());}}

Στον παραπάνω κώδικα, το αντικείμενο "αποτέλεσμα" υποβάλλεται σε επεξεργασία για την αποτυχία και την επιτυχία των δοκιμαστικών περιπτώσεων που εκτελούμε.

Πρώτο πρόγραμμα JUnit

Η δίκαιη γνώση του SDLC, ο προγραμματισμός java και τα βασικά στοιχεία της διαδικασίας δοκιμής λογισμικού βοηθά στην κατανόηση του προγράμματος JUnit.

Ας κατανοήσουμε τη Δοκιμή μονάδας χρησιμοποιώντας ένα ζωντανό παράδειγμα. Πρέπει να δημιουργήσουμε μια τάξη δοκιμής με μια μέθοδο δοκιμής σχολιασμένη με το @Test όπως δίνεται παρακάτω:

MyFirstClassTest.java

πακέτο guru99.JUnit;εισαγωγή στατικού org.JUnit.Assert. *;εισαγωγή org.JUnit.Test;δημόσια τάξη MyFirstClassTest {@Δοκιμήpublic void myFirstMethod () {String str = "Το JUnit λειτουργεί καλά";assertEquals ("Το JUnit λειτουργεί καλά", str);}}

TestRunner.java

Για να εκτελέσουμε τη δοκιμαστική μας μέθοδο (παραπάνω), πρέπει να δημιουργήσουμε έναν δοκιμαστικό δρομέα. Στον δοκιμαστικό δρομέα πρέπει να προσθέσουμε την τάξη δοκιμής ως παράμετρο στη μέθοδο runclasses () του JUnitCore. Θα επιστρέψει το αποτέλεσμα της δοκιμής, ανάλογα με το αν η δοκιμή έχει περάσει ή αποτύχει.

Για περισσότερες λεπτομέρειες σχετικά με αυτό δείτε τον παρακάτω κώδικα:

πακέτο guru99.JUnit;εισαγωγή org.JUnit.runner.JUnitCore;εισαγωγή org.JUnit.runner.Result;εισαγωγή org.JUnit.runner.notification.Failure;δημόσια τάξη TestRunner {Δημόσιο στατικό κενό (String [] args) {Αποτέλεσμα αποτελέσματος = JUnitCore.runClasses (MyFirstClassTest.class);για (Αποτυχία αποτυχίας: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Αποτέλεσμα ==" + αποτέλεσμα.wasSuccessful ());}}

Παραγωγή

Μόλις το TestRunner.java εκτελέσει τις μεθόδους δοκιμών, λαμβάνουμε την παραγωγή ως αποτυχημένη ή επιτυχημένη . Βρείτε την παρακάτω εξήγηση εξόδου:

  1. Σε αυτό το παράδειγμα, μετά την εκτέλεση του MyFirstClassTest.java , η δοκιμή περνά και το αποτέλεσμα είναι πράσινο.
  2. Εάν θα είχε αποτύχει θα έπρεπε να είχε δείξει το αποτέλεσμα ως κόκκινο και η αποτυχία μπορεί να παρατηρηθεί στο ίχνος αποτυχίας. Δείτε παρακάτω JUnit gui:

Περίληψη :

  • Το JUnit είναι ένα πλαίσιο που υποστηρίζει αρκετούς σχολιασμούς για τον προσδιορισμό μιας μεθόδου που περιέχει μια δοκιμή.
  • Το JUnit παρέχει έναν σχολιασμό που ονομάζεται @Test, το οποίο λέει στο JUnit ότι η δημόσια κενή μέθοδος στην οποία χρησιμοποιείται μπορεί να εκτελεστεί ως δοκιμαστική υπόθεση.
  • Ένα δοκιμαστικό προσάρτημα είναι ένα πλαίσιο όπου εκτελείται μια δοκιμαστική θήκη
  • Για την εκτέλεση πολλαπλών δοκιμών με συγκεκριμένη σειρά, μπορεί να γίνει συνδυάζοντας όλες τις δοκιμές σε ένα μέρος. Αυτό το μέρος ονομάζεται ως δοκιμαστικές σουίτες.
  • Το JUnit παρέχει ένα εργαλείο για την εκτέλεση των δοκιμών όπου μπορούμε να εκτελέσουμε τις δοκιμαστικές μας περιπτώσεις που αναφέρονται ως Test Runner.