JUnit Δοκιμές @Before @BeforeClass Annotation

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

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

Τι είναι το εξάρτημα δοκιμής

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

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

public class OutputFileTest {
    private File output; 
    output = new File(...);
    output.delete(); 
public void testFile1(){
        //Code to verify Test Case 1
}
    output.delete();
    output = new File(...);
public void testFile2(){
        //Code to verify Test Case 2
}
 output.delete(); 
}

Λίγα θέματα εδώ

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

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

public class OutputFileTest		
{
    private File output; 
    @Before public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

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

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

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

Ρύθμιση και Teardown

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

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

Ρύθμιση

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

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

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

Σημείωση:

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

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

public class OutputFileTest		
{
    private File output; 
    @Before	public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

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

Ρύθμιση και Teardown

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

Υπόθεση:

Το testFile1() εκτελείται πριν από το testFile2() – το οποίο δεν είναι εγγυημένο.

Ρύθμιση μόνο μία φορά

  • Είναι δυνατό να εκτελεστεί μια μέθοδος μόνο μία φορά για ολόκληρη την κλάση δοκιμής πριν από την εκτέλεση οποιουδήποτε από τους ελέγχους και πριν από οποιαδήποτε @Πριν μέθοδος(ες).
  • Το "Once only setup" είναι χρήσιμο για την εκκίνηση διακομιστών, το άνοιγμα επικοινωνιών κ.λπ. Είναι χρονοβόρο να κλείσετε και να ανοίξετε ξανά πόρους για κάθε δοκιμή.
  • Αυτό μπορεί να γίνει χρησιμοποιώντας τον σχολιασμό @Πριν το μάθημα in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

Καταστρέψτε μόνο μια φορά

  • Παρόμοια με τη ρύθμιση μιας μόνο φοράς, είναι επίσης διαθέσιμη μια μέθοδος καθαρισμού μόνο μία φορά. Λειτουργεί μετά από όλες τις δοκιμαστικές μεθόδους και @Μετά έχουν εκτελεστεί σχολιασμοί.
  • Είναι χρήσιμο για διακοπή διακομιστών, κλείσιμο συνδέσμων επικοινωνίας κ.λπ.
  • Αυτό μπορεί να γίνει χρησιμοποιώντας το @Μετά το μάθημα σχόλιο
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit Δοκιμαστικές Σουίτες

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

Junit Δρομέας δοκιμής

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

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

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

Όνομα JUnit πρόγραμμα

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

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

MyFirstClassTest.java

package guru99.JUnit;		

import static org.JUnit.Assert.*;				

import org.JUnit.Test;		

public class MyFirstClassTest {				

    @Test		
    public void myFirstMethod(){					
        String str= "JUnit is working fine";					
        assertEquals("JUnit is working fine",str);					
    }
}		

TestRunner.java

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

Για περισσότερα ντεtails σε αυτό δείτε τον παρακάτω κώδικα:

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(MyFirstClassTest.class);					
			for (Failure failure : result.getFailures()) {							
              System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

Παραγωγή

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

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

JUnit Έξοδος προγράμματος

Χαρακτηριστικά

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