Junit Assert & AssertEquals with Example

Τι είναι το Junit Assert;

Το Assert είναι μια μέθοδος χρήσιμη για τον προσδιορισμό της κατάστασης Pass ή Fail μιας δοκιμαστικής περίπτωσης. Οι μέθοδοι διεκδίκησης παρέχονται από την κλάση org.junit.Assert που επεκτείνει την κλάση java.lang.Object.

Υπάρχουν διάφοροι τύποι ισχυρισμών όπως Boolean, Null, Identical κ.λπ.

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

Οι μέθοδοι επιβεβαίωσης παρέχονται από την τάξη org.junit.Assert που εκτείνεται java.lang.Αντικείμενο τάξη.

JUnit Μέθοδοι διεκδίκησης

Boolean

Εάν θέλετε να ελέγξετε τις δυαδικές συνθήκες (αληθές ή λάθος), μπορείτε να χρησιμοποιήσετε τις ακόλουθες μεθόδους διεκδίκησης

  1. assertTrue (κατάσταση)
  2. assertFalse (κατάσταση)

Εδώ η συνθήκη είναι μια τιμή boolean.

Μηδενικό αντικείμενο

Εάν θέλετε να ελέγξετε την αρχική τιμή ενός αντικειμένου/μεταβλητής, έχετε τις ακόλουθες μεθόδους:

  1. assertNull(αντικείμενο)
  2. assertNotNull(αντικείμενο)

Εδώ είναι το αντικείμενο Java αντικείμενο π.χ assertNull(πραγματικό);

Πανομοιότυπο

Εάν θέλετε να ελέγξετε εάν τα αντικείμενα είναι πανομοιότυπα (δηλ. συγκρίνετε δύο αναφορές στο ίδιο αντικείμενο java) ή διαφορετικά.

  1. βεβαιώνω Ίδιο (αναμενόμενο, πραγματικό), Θα επιστρέψει αληθινό εάν αναμενόμενο == πραγματικός
  2. assertNotSame (αναμενόμενο, πραγματικό)

Υποστηρίξτε ίσα

Εάν θέλετε να ελέγξετε την ισότητα δύο αντικειμένων, έχετε τις ακόλουθες μεθόδους

  • assertEquals (αναμενόμενο, πραγματικό)

Θα επιστρέψει true εάν: αναμενόμενη.ισούται (πραγματικό) επιστρέφει αληθινό.

Βεβαιωθείτε ότι ο πίνακας είναι ίσος

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

  • assertArrayEquals(αναμενόμενο, πραγματικό)

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

  • assertEquals(αναμενόμενο[i],πραγματικό[i])
  • assertArrayEquals(αναμενόμενο[i],πραγματικό[i])

Μήνυμα αποτυχίας

Εάν θέλετε να ρίξετε οποιοδήποτε σφάλμα ισχυρισμού, έχετε αποτυγχάνω() που οδηγεί πάντα σε αποτυχία.

  • Αποτυχία (μήνυμα);

Μπορείτε να έχετε μέθοδο διεκδίκησης με μια πρόσθετη Σπάγγος παράμετρος ως πρώτη παράμετρος. Αυτή η συμβολοσειρά θα προσαρτηθεί στο μήνυμα αποτυχίας εάν ο ισχυρισμός αποτύχει. Π.χ αποτυχία (μήνυμα) μπορεί να γραφτεί ως

  • assertEquals (μήνυμα, αναμενόμενο, πραγματικό)

JUnit επιβεβαιώσω ίσα

έχετε assertEquals(a,b) που στηρίζεται στην ισούται με () μέθοδος της κλάσης Object.

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

If a και b είναι πρωτόγονοι όπως byte, int, boolean, κ.λπ. τότε θα γίνουν τα ακόλουθα για assertEquals(a,b):

a και b θα μετατραπούν στον αντίστοιχο τύπο αντικειμένου περιτυλίγματος (Byte, Ακέραιος αριθμός, Boolean, κ.λπ.), και μετά α.ίσον(β) θα αξιολογηθεί.

Για παράδειγμα: Θεωρήστε τις παρακάτω συμβολοσειρές που έχουν τις ίδιες τιμές, ας τις δοκιμάσουμε χρησιμοποιώντας το assertTrue

String obj1="Junit";
String obj2="Junit";
assertEquals(obj1,obj2);

Η παραπάνω δήλωση βεβαίωσης θα επιστρέψει true καθώς το obj1.equals(obj2) επιστρέφει true.

Ισχυρισμοί κινητής υποδιαστολής

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

Ο ισχυρισμός αξιολογείται όπως δίνεται παρακάτω:

  • Math.abs( αναμενόμενο – πραγματικό ) <= δέλτα

Για παράδειγμα:

assertEquals(αDoubleΑξία, άλληDoubleΑξία, 0.001 )

JUnit Επιβεβαιώστε το Παράδειγμα

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

Ας δημιουργήσουμε μια απλή δοκιμαστική τάξη με το όνομα Junit4AssertionTest.java και μια δοκιμαστική τάξη δρομέα TestRunner.java.

Θα δημιουργήσετε λίγες μεταβλητές και σημαντικές δηλώσεις ισχυρισμών JUnit.

Σε αυτό το παράδειγμα, θα εκτελέσετε την κλάση δοκιμής χρησιμοποιώντας το TestRunner.java

Βήμα 1) Ας δημιουργήσουμε μια κλάση που καλύπτει όλες τις σημαντικές μεθόδους δήλωσης ισχυρισμών στο junit:

Junit4AssertionTest.java

package guru99.junit;		

import static org.junit.Assert.*;				
import org.junit.Test;		


public class Junit4AssertionTest {				

    @Test		
    public void testAssert(){					
        		
        //Variable declaration		
        String string1="Junit";					
        String string2="Junit";					
        String string3="test";					
        String string4="test";					
        String string5=null;					
        int variable1=1;					
        int	variable2=2;					
        int[] airethematicArrary1 = { 1, 2, 3 };					
        int[] airethematicArrary2 = { 1, 2, 3 };					
        		
        //Assert statements		
        assertEquals(string1,string2);					
        assertSame(string3, string4);					
        assertNotSame(string1, string3);					
        assertNotNull(string1);			
        assertNull(string5);			
        assertTrue(variable1<variable2);					
        assertArrayEquals(airethematicArrary1, airethematicArrary2);					
    }		
}		

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

Βήμα 3) Ας αναλύσουμε την αναμενόμενη έξοδο βήμα προς βήμα:

Εξετάστε όλες τις δηλώσεις ισχυρισμών μία προς μία:

  1. assertEquals(string1,string2);

Τώρα συγκρίνετε το string1=” Junit” με το string2=” Junit” με τη μέθοδο ίσης της κλάσης αντικειμένου. Αντικατάσταση της μεθόδου assertEquals από τη μέθοδο java.lang.Object.equals():

Το string1.equals(string2)=> επιστρέφει true

Άρα το assertEquals(string1,string2) θα επιστρέψει ναι.

  1. assertSame(string3, string4);

Η λειτουργία "assertSame()" είναι να ελέγξει ότι τα δύο αντικείμενα αναφέρονται στο ίδιο αντικείμενο.

Εφόσον το string3=”test” και το string4=”test” σημαίνει ότι και το string3 και το string4 είναι του ίδιου τύπου, οπότε το assertSame(string3, string4) θα επιστρέψει ναι.

  1. assertNotSame(string1, string3);

Η λειτουργία "assertNotSame()" είναι να ελέγξει ότι τα δύο αντικείμενα δεν αναφέρονται στο ίδιο αντικείμενο.

Εφόσον το string1=”Junit” και το string3=”test” σημαίνει ότι και το string1 και το string3 είναι διαφορετικών τύπων, οπότε το assertNotSame(string1, string3) θα επιστρέψει ναι.

  1. assertNotNull(string1);

Η λειτουργία "assertNotNull()" είναι να ελέγξει ότι ένα αντικείμενο δεν είναι null.

Δεδομένου ότι string1 = "Junit" που είναι μια μη μηδενική τιμή, έτσι το assertNotNull(string1) θα επιστρέψει ναι.

  1. assertNull(string5);

Η λειτουργία "assertNull()" είναι να ελέγξει ότι ένα αντικείμενο είναι μηδενικό.

Εφόσον string5= null που είναι μηδενική τιμή, το assertNull(string5) θα επιστρέψει ναι.

  1. assertTrue(variable1

Η λειτουργία "assertTrue()" είναι να ελέγξει ότι μια συνθήκη είναι αληθής.

Αφού μεταβλητή1=1 και μεταβλητή2=2, που δείχνει αυτή τη μεταβλητή1 ναι.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

Η λειτουργία "assertArrayEquals()" είναι να ελέγξει ότι ο αναμενόμενος πίνακας και ο πίνακας που προκύπτει είναι ίσοι. Ο τύπος του Array μπορεί να είναι int, long, short, char, byte ή java.lang.Object.

Εφόσον airethematicArrary1 = { 1, 2, 3 } και airethematicArrary2 = { 1, 2, 3 } που δείχνει ότι και οι δύο πίνακες είναι ίσοι, οπότε το assertArrayEquals(airethematicArrary1, airethematicArrary2) θα επιστρέψει ναι

Δεδομένου ότι και οι επτά ισχυρίζονται δηλώσεις του Junit4AssertionTest.java Η κλάση επιστρέφει true, επομένως όταν εκτελείτε τη δοκιμαστική κλάση επιβεβαίωσης, θα επιστρέψει μια επιτυχημένη δοκιμή. (δείτε την έξοδο παρακάτω)

Βήμα 4) Κάντε δεξί κλικ στο Junit4AssertionTest.java και κάντε κλικ στο runAs->JUnit. Θα δείτε την έξοδο όπως δίνεται παρακάτω:

JUnit Επιβεβαιώστε το Παράδειγμα

Η παραπάνω έξοδος δείχνει ένα επιτυχημένο αποτέλεσμα δοκιμής όπως αναμενόταν.

Περίληψη

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