JUnit Οδηγός σχολιασμών με Παράδειγμα: Τι είναι το @Test και το @After

Τι είναι JUnit Σχολιασμοί;

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

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

S.No. Οι σχολιασμοί Descriptιόν
1. @Δοκιμή Αυτός ο σχολιασμός είναι μια αντικατάσταση του org.junit.TestCase που υποδεικνύει ότι η μέθοδος δημόσιας κενού στην οποία είναι προσαρτημένη μπορεί να εκτελεστεί ως δοκιμαστική περίπτωση.
2. @Πριν Αυτός ο σχολιασμός χρησιμοποιείται εάν θέλετε να εκτελέσετε κάποια δήλωση, όπως προϋποθέσεις πριν από κάθε δοκιμαστική περίπτωση.
3. @Πριν το μάθημα Αυτός ο σχολιασμός χρησιμοποιείται εάν θέλετε να εκτελέσετε ορισμένες εντολές προτού πρέπει να εκτελεστούν όλες οι περιπτώσεις δοκιμής για π.χ. δοκιμαστική σύνδεση πριν από όλες τις περιπτώσεις δοκιμής.
4. @Μετά Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να εκτελέσετε ορισμένες εντολές μετά από κάθε μία Δοκιμαστική θήκη για π.χ. επαναφορά μεταβλητών, διαγραφή προσωρινών αρχείων, μεταβλητών κ.λπ.
5. @Μετά το μάθημα Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να εκτελέσετε ορισμένες εντολές μετά από όλες τις δοκιμαστικές περιπτώσεις για π.χ. Αποδέσμευση πόρων μετά την εκτέλεση όλων των δοκιμαστικών περιπτώσεων.
6. @Ignores Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να αγνοήσετε ορισμένες δηλώσεις κατά την εκτέλεση της δοκιμής για π.χ. την απενεργοποίηση ορισμένων περιπτώσεων δοκιμής κατά την εκτέλεση της δοκιμής.
7. @Test (timeout=500) Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να ορίσετε κάποιο χρονικό όριο κατά την εκτέλεση της δοκιμής, π.χ. εάν εργάζεστε βάσει κάποιου SLA (Σύμβαση επιπέδου υπηρεσίας) και οι δοκιμές πρέπει να ολοκληρωθούν εντός ορισμένου χρόνου.
8. @Test(expected=IllegalArgumentException.class) Αυτός ο σχολιασμός μπορεί να χρησιμοποιηθεί εάν θέλετε να χειριστείτε κάποια εξαίρεση κατά την εκτέλεση της δοκιμής. Για, π.χ., εάν θέλετε να ελέγξετε εάν μια συγκεκριμένη μέθοδος εισάγει καθορισμένη εξαίρεση ή όχι.

JUnit Παράδειγμα σχολιασμών

Ας δημιουργήσουμε μια τάξη που καλύπτει σημαντικά JUnit σχολιασμούς με απλές εντολές εκτύπωσης και εκτελέστε τις με μια κλάση δοκιμαστικού δρομέα:

Βήμα 1) Εξετάστε την παρακάτω κλάση java που έχει διάφορες μεθόδους που επισυνάπτονται σε σχολιασμούς που αναφέρονται παραπάνω:

JunitAnnotationsExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				
import static org.junit.Assert.assertFalse;				

import java.util.ArrayList;		

import org.junit.After;		
import org.junit.AfterClass;		
import org.junit.Before;		
import org.junit.BeforeClass;		
import org.junit.Ignore;		
import org.junit.Test;		

public class JunitAnnotationsExample {				

    private ArrayList<String> list;					

    @BeforeClass		
    public static void m1() {							
        System.out.println("Using @BeforeClass , executed before all test cases ");					
    }		

    @Before		
    public void m2() {					
        list = new ArrayList<String>();					
        System.out.println("Using @Before annotations ,executed before each test cases ");					
    }		

    @AfterClass		
    public static void m3() {							
        System.out.println("Using @AfterClass ,executed after all test cases");					
    }		

    @After		
    public void m4() {					
        list.clear();			
        System.out.println("Using @After ,executed after each test cases");					
    }		

    @Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

    @Ignore		
    public void m6() {					
        System.out.println("Using @Ignore , this execution is ignored");					
    }		

    @Test(timeout = 10)			
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

    @Test(expected = NoSuchMethodException.class)					
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					

    }		

}		

Βήμα 2) Ας δημιουργήσουμε μια κλάση δοκιμαστικού προγράμματος εκτέλεσης για εκτέλεση της παραπάνω δοκιμής:

TestRunner.java

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(JunitAnnotationsExample.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

Αναμενόμενο Αποτέλεσμα

  • Όλες οι δοκιμαστικές περιπτώσεις θα εκτελεστούν μία προς μία και όλες οι εντολές εκτύπωσης μπορούν να προβληθούν σε μια κονσόλα.
  • Όπως συζητήθηκε στον παραπάνω πίνακα @Before annotation in JUnit, @BeforeClass [ μέθοδοι m1() και m2() ] θα εκτελεστούν πριν από κάθε και πριν από όλες τις περιπτώσεις δοκιμής αντίστοιχα.
  • Με τον ίδιο τρόπο @After in JUnit, @afterClass (μέθοδος m3() και m4()) θα εκτελεστούν μετά από κάθε και μετά από όλες τις περιπτώσεις δοκιμής αντίστοιχα. Το @ignore (μέθοδος m6()) θα θεωρηθεί ότι αγνοεί τη δοκιμή.

Ας αναλύσουμε λεπτομερώς τις περιπτώσεις δοκιμής που χρησιμοποιούνται στην παραπάνω κατηγορία java:

  1. Εξετάστε τη μέθοδο m5() όπως δίνεται παρακάτω:
	@Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

Στην παραπάνω μέθοδο καθώς προσθέτετε μια συμβολοσειρά στη μεταβλητή "list" έτσι

  • list.isEmpty() θα επιστρέψει ψευδής.
  • assertFalse(list.isEmpty()) πρέπει να επιστρέψει αληθινό.
  • Ως αποτέλεσμα, η δοκιμαστική περίπτωση θα passieren.

Καθώς έχετε προσθέσει μόνο μία συμβολοσειρά στη λίστα, έτσι το μέγεθος είναι ένα.

  • list.size() πρέπει να επιστρέψει την τιμή int ως "1" .
  • So assertEquals(1, list.size()) πρέπει να επιστρέψει αληθινό.
  • Ως αποτέλεσμα, η δοκιμαστική περίπτωση θα passieren.
  1. Εξετάστε τη μέθοδο m7() όπως δίνεται παρακάτω:
@Test(timeout = 10)		
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

Όπως συζητήθηκε παραπάνω @Test (timeout = 10)Ο σχολιασμός χρησιμοποιείται για την επιβολή χρονικού ορίου λήξης στη δοκιμαστική περίπτωση.

  1. Εξετάστε τη μέθοδο m8() όπως δίνεται παρακάτω:
@Test(expected = NoSuchMethodException.class)				
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					
    
    }		

Όπως συζητήθηκε παραπάνω @Test (αναμενόμενο) θα ελέγξει για καθορισμένη εξαίρεση κατά την εκτέλεσή της, οπότε η μέθοδος m8() θα ρίξει "Δεν υπάρχει τέτοια εξαίρεση μεθόδου". Ως αποτέλεσμα, η δοκιμή θα εκτελεστεί με εξαίρεση.

Καθώς όλες οι περιπτώσεις δοκιμής περνούν, αυτό έχει ως αποτέλεσμα την επιτυχή εκτέλεση της δοκιμής.

Πραγματικό αποτέλεσμα

Καθώς υπάρχουν τρεις δοκιμαστικές περιπτώσεις στο παραπάνω παράδειγμα, όλες οι δοκιμαστικές περιπτώσεις θα εκτελεστούν μία προς μία. Δείτε την έξοδο παρακάτω:

JUnit Παράδειγμα σχολιασμών
JUnit Παράδειγμα σχολιασμών

Δείτε παρακάτω δηλώσεις εκτύπωσης που μπορείτε να δείτε στην κονσόλα:

Χρησιμοποιώντας το @BeforeClass , που εκτελείται πριν από όλες τις δοκιμαστικές περιπτώσεις

Χρησιμοποιώντας σχολιασμούς @Before, που εκτελούνται πριν από κάθε δοκιμαστική περίπτωση

Χρησιμοποιώντας το @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση

Χρησιμοποιώντας σχολιασμούς @Before, που εκτελούνται πριν από κάθε δοκιμαστική περίπτωση

Χρησιμοποιώντας το @Test(timeout), μπορεί να χρησιμοποιηθεί για την επιβολή του timeout in JUnit4 δοκιμαστική περίπτωση

Χρησιμοποιώντας το @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση

Χρησιμοποιώντας σχολιασμούς @Before, που εκτελούνται πριν από κάθε δοκιμαστική περίπτωση

Χρησιμοποιώντας το @Test(expected) , θα ελέγξει για καθορισμένη εξαίρεση κατά την εκτέλεσή του

Χρησιμοποιώντας το @After, εκτελείται μετά από κάθε δοκιμαστική περίπτωση

Χρησιμοποιώντας το @AfterClass, που εκτελείται μετά από όλες τις δοκιμαστικές περιπτώσεις

JUnit Επιβεβαίωση Τάξης

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

Όπως είδατε νωρίτερα, ο παρακάτω πίνακας περιγράφει σημαντικές μεθόδους και περιγραφή του Assert:

S.No. Μέθοδος Descriptιόν
1. void assertEquals (αναμενόμενο boolean, πραγματικό boolean) Ελέγχει αν δύο τιμές είναι ίσες παρόμοιες με τη μέθοδο ίσης της κλάσης Object
2. void assertFalse (συνθήκη Boolean) Η λειτουργικότητα είναι να ελέγξετε ότι μια συνθήκη είναι ψευδής.
3. void assertNotNull(Αντικείμενο) Η λειτουργία "assertNotNull" είναι να ελέγχει ότι ένα αντικείμενο δεν είναι μηδενικό.
4. void assertNull(Αντικείμενο) Η λειτουργία "assertNull" είναι να ελέγξετε ότι ένα αντικείμενο είναι μηδενικό.
5. void assertTrue (συνθήκη Boolean) Η λειτουργία "assertTrue" είναι να ελέγξετε ότι μια συνθήκη είναι αληθής.
6. void fail() Εάν θέλετε να ρίξετε οποιοδήποτε σφάλμα ισχυρισμού, έχετε τη fail() που οδηγεί πάντα σε μια ετυμηγορία αποτυχίας.
7. void assertSame([Μήνυμα συμβολοσειράς] Η λειτουργία "assertSame" είναι να ελέγξετε ότι τα δύο αντικείμενα αναφέρονται στο ίδιο αντικείμενο.
8. void assertNotSame([Μήνυμα συμβολοσειράς] Η λειτουργία "assertNotSame" είναι να ελέγξει ότι τα δύο αντικείμενα δεν αναφέρονται στο ίδιο αντικείμενο.

JUnit Τάξη Δοκιμαστικών Υποθέσεων

Για την εκτέλεση πολλαπλών δοκιμών, η κλάση TestCase είναι διαθέσιμη στο org.junit.TestCase πακέτα. Ο σχολιασμός @Test λέει JUnit ότι αυτή η δημόσια κενή μέθοδος (Test Case εδώ) στην οποία είναι συνδεδεμένη μπορεί να εκτελεστεί ως δοκιμαστική περίπτωση.

Ο παρακάτω πίνακας δείχνει μερικές σημαντικές μεθόδους που είναι διαθέσιμες σε org.junit.TestCase τάξη:

S.No. Μέθοδος Descriptιόν
1. int countTestCases() Αυτή η μέθοδος χρησιμοποιείται για να μετρήσει τον αριθμό των δοκιμαστικών περιπτώσεων που εκτελέστηκαν από run (TestResult tr) μέθοδος.
2. TestResult createResult() Αυτή η μέθοδος χρησιμοποιείται για τη δημιουργία α Αποτέλεσμα δοκιμής αντικείμενο.
3. Συμβολοσειρά getName () Αυτή η μέθοδος επιστρέφει μια συμβολοσειρά που δεν είναι παρά a TestCase.
4. TestResult run() Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση μιας δοκιμής που επιστρέφει a Αποτέλεσμα δοκιμής αντικείμενο
5. void run (Αποτέλεσμα TestResult) Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση μιας δοκιμής που έχει α Αποτέλεσμα δοκιμής αντικείμενο που δεν επιστρέφει τίποτα.
6. void setName (Όνομα συμβολοσειράς) Αυτή η μέθοδος χρησιμοποιείται για να ορίσετε ένα όνομα του a TestCase.
7. void setUp() Αυτή η μέθοδος χρησιμοποιείται για τη σύνταξη κώδικα συσχέτισης πόρων. π.χ. Δημιουργήστε μια σύνδεση βάσης δεδομένων.
8. void tearDown() Αυτή η μέθοδος χρησιμοποιείται για τη σύνταξη κώδικα απελευθέρωσης πόρων. π.χ. Αποδέσμευση σύνδεσης βάσης δεδομένων μετά την εκτέλεση της λειτουργίας συναλλαγής.

JUnit Τάξη Test Result

Όταν εκτελείτε μια δοκιμή, επιστρέφει ένα αποτέλεσμα (με τη μορφή του Αποτέλεσμα δοκιμής αντικείμενο). Αυτό το αντικείμενο TestResult μπορεί να χρησιμοποιηθεί για την ανάλυση του αντικειμένου που προκύπτει. Αυτό το αποτέλεσμα δοκιμής μπορεί να είναι είτε αποτυχία είτε επιτυχές.

Δείτε τον παρακάτω πίνακα για σημαντικές μεθόδους που χρησιμοποιούνται στην κλάση org.junit.TestResult:

S.No. Μέθοδος Descriptιόν
1. void addError (Δοκιμή δοκιμής, Throwable t) Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να προσθέσετε ένα σφάλμα στη δοκιμή.
2. void addFailure (Δοκιμή δοκιμής, AssertionFailedError t) Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να προσθέσετε μια αποτυχία στη λίστα αποτυχιών.
3. void endTest (Δοκιμή δοκιμής) Αυτή η μέθοδος χρησιμοποιείται για να ειδοποιήσει ότι μια δοκιμή εκτελείται (ολοκληρώθηκε)
4. int errorCount() Αυτή η μέθοδος χρησιμοποιείται για τη λήψη του σφάλματος που ανιχνεύεται κατά την εκτέλεση της δοκιμής.
5. Απαρίθμηση Σφάλματα() Αυτή η μέθοδος απλώς επιστρέφει μια συλλογή (Απαρίθμηση εδώ) σφαλμάτων.
6. int dështimCount() Αυτή η μέθοδος χρησιμοποιείται για να πάρει τον αριθμό των σφαλμάτων που εντοπίστηκαν κατά την εκτέλεση της δοκιμής.
7. άκυρη εκτέλεση (δοκιμή TestCase) Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση μιας δοκιμαστικής περίπτωσης.
8. int runCount() Αυτή η μέθοδος απλά μετράει την εκτελεσθείσα δοκιμή.
9. void startTest (Δοκιμή δοκιμής) Αυτή η μέθοδος χρησιμοποιείται για να ειδοποιήσει ότι έχει ξεκινήσει μια δοκιμή.
10. void stop() Αυτή η μέθοδος χρησιμοποιείται για τη δοκιμαστική εκτέλεση που θα διακοπεί.

JUnit Τάξη δοκιμαστικής σουίτας

Εάν θέλετε να εκτελέσετε πολλαπλές δοκιμές με μια καθορισμένη σειρά, μπορεί να γίνει συνδυάζοντας όλες τις δοκιμές σε ένα μέρος. Αυτό το μέρος ονομάζεται δοκιμαστικές σουίτες.

Δείτε τον παρακάτω πίνακα για σημαντικές μεθόδους που χρησιμοποιούνται σε org.junit.TestSuite τάξη:

S.No. Μέθοδος Descriptιόν
1. void addTest (Δοκιμή δοκιμής) Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να προσθέσετε μια δοκιμή στη σουίτα.
2. void addTestSuite(Class testClass) Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να καθορίσετε την κλάση κατά την προσθήκη μιας δοκιμής στη σουίτα.
3. int countTestCases() Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να μετρήσετε τον αριθμό των περιπτώσεων δοκιμής.
4. Συμβολοσειρά getName () Αυτή η μέθοδος χρησιμοποιείται για να πάρει το όνομα της δοκιμαστικής σουίτας.
5. void run (Αποτέλεσμα TestResult) Αυτή η μέθοδος χρησιμοποιείται για την εκτέλεση μιας δοκιμής και τη συλλογή των αποτελεσμάτων της δοκιμής Αποτέλεσμα δοκιμής αντικείμενο.
6. void setName (Όνομα συμβολοσειράς) Αυτή η μέθοδος χρησιμοποιείται για να ορίσετε το όνομα του TestSuite.
7. Test testAt (int index) Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να επιστρέψετε τη δοκιμή σε δεδομένο ευρετήριο.
8. int testCount() Αυτή η μέθοδος χρησιμοποιείται εάν θέλετε να επιστρέψετε έναν αριθμό δοκιμών στη σουίτα.
9. προειδοποίηση στατικής δοκιμής (Μήνυμα συμβολοσειράς) Αυτή η μέθοδος επιστρέφει μια δοκιμή που θα αποτύχει και θα καταγράψει ένα προειδοποιητικό μήνυμα.

Σύνοψη

  • JUnit παρέχει ένα φορητό API, το οποίο παρέχει όλες τις σημαντικές κλάσεις και Selenium σχολιασμοί χρήσιμοι για τη σύνταξη μιας δοκιμής μονάδας.
  • Μαθήματα που είναι πολύ χρήσιμα κατά τη σύνταξη μιας δοκιμαστικής περίπτωσης
    • org.junit.Assert
    • org.junit.TestCase
    • org.junit.TestResult
    • org.junit.TestSuite
  • Σημαντικό και συχνά χρησιμοποιούμενο JUnit λίστα σχολιασμών@Before@BeforeClass@After

    @Μετά το μάθημα

    @Δοκιμή

    @Αγνοώ