Junit Assert & AssertEquals with Example

⚡ Έξυπνη Σύνοψη

JUnit Οι συναρτήσεις Assert και AssertEquals καθορίζουν την κατάσταση επιτυχίας ή αποτυχίας μιας δοκιμαστικής περίπτωσης συγκρίνοντας τις αναμενόμενες και τις πραγματικές τιμές. Αυτός ο πόρος εξηγεί τις μεθόδους assert που παρέχονται από το org.junit.Assert, συμπεριλαμβανομένων των boolean, null, identity, equality και array asserts, με ένα πλήρες λειτουργικό παράδειγμα.

  • Σκοπός: Οι μέθοδοι Assert από το org.junit.Assert επαληθεύουν τις συνθήκες και εντοπίζουν αποτυχίες δοκιμών.
  • 🔢 Τύποι μεθόδων: Οι ισχυρισμοί Boolean, null, identical, equals, array-equals και fail-message καλύπτουν συνήθεις ελέγχους.
  • 🟰 assertEquals: Συγκρίνει τιμές χρησιμοποιώντας τη μέθοδο equals(), wrapping τα πρωτόγονα σε αντικείμενα πρώτα.
  • 🔬 Κυμαινόμενο Σημείο: Απαιτείται ανοχή δέλτα κατά τη σύγκριση τιμών float ή double.
  • 🧪 Παράδειγμα: Μια κλάση δοκιμής και ένας εκτελέστης επιδεικνύουν ότι κάθε πρόταση κλειδιού assert επιστρέφει true.

JUnit Διεκδικήστε και ΔιεκδικήστεΙσοδυναμεί

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

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

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

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

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

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

Boolean

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

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

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

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

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

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

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

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

Αν θέλετε να ελέγξετε αν τα αντικείμενα είναι πανομοιότυπα (δηλαδή, συγκρίνοντας δύο αναφορές στο ίδιο Java αντικείμενο) ή διαφορετικό:

  1. assertSame(αναμενόμενο, πραγματικό) — Θα επιστρέψει true αν αναμενόμενο == πραγματικός.
  2. assertNotSame (αναμενόμενο, πραγματικό)

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

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

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

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

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

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

  • 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, Ακέραιος, Λογική τιμή, κ.λπ.), και μετά α.ίσον(β) θα αξιολογηθεί.

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

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

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

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

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

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

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

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

assertEquals(aDoubleΑξία, άλληDoubleΤιμή, 0.001)

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

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

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

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

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

Βήμα 1) Ας δημιουργήσουμε μια κλάση που να καλύπτει όλες τις σημαντικές μεθόδους δήλωσης assert στο 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) Πρέπει να δημιουργήσετε μια κλάση test runner για να εκτελέσετε την παραπάνω κλάση:

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) Ας αναλύσουμε την αναμενόμενη έξοδο βήμα προς βήμα. Εξετάστε όλες τις εντολές assert μία προς μία:

  1. assertEquals(συμβολοσειρά1, συμβολοσειρά2);

Τώρα συγκρίνετε το string1="Junit" με το string2="Junit" με τη μέθοδο equals της κλάσης Object. Αντικαθιστώντας τη μέθοδο 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”, που είναι μια μη null τιμή, το assertNotNull(string1) θα επιστρέψει ναι.

  1. assertNull(string5);

Η λειτουργία “assertNull()” είναι να ελέγχει ότι ένα αντικείμενο είναι null. Δεδομένου ότι το string5=null, το οποίο είναι μια τιμή null, το assertNull(string5) θα επιστρέψει ναι.

  1. assertTrue(μεταβλητή1 < μεταβλητή2);

Η λειτουργία “assertTrue()” είναι να ελέγχει ότι μια συνθήκη είναι αληθής. Δεδομένου ότι η μεταβλητή1=1 και η μεταβλητή2=2, η οποία δείχνει ότι η συνθήκη μεταβλητής1 < μεταβλητή2 είναι αληθής, η assertTrue(variable1 < variable2) θα επιστρέψει ναι.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

Η λειτουργία “assertArrayEquals()” είναι να ελέγξει ότι ο αναμενόμενος πίνακας και ο πίνακας που προκύπτει είναι ίσοι. Ο τύπος του πίνακα μπορεί να είναι int, long, short, char, byte ή java.lang.Object. Δεδομένου ότι airethematicArrary1 = { 1, 2, 3 } και airethematicArrary2 = { 1, 2, 3 }, που δείχνει ότι και οι δύο πίνακες είναι ίσοι, η assertArrayEquals(airethematicArrary1, airethematicArrary2) θα επιστρέψει ναι.

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

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

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

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

Συχνές Ερωτήσεις

Ναι. Οι βοηθοί τεχνητής νοημοσύνης μπορούν να παράγουν assertEquals, assertTrue και άλλους ισχυρισμούς από την αναμενόμενη συμπεριφορά μιας μεθόδου. Θα πρέπει να ελέγξετε τις αναμενόμενες τιμές και τις περιπτώσεις ακμών για να βεβαιωθείτε ότι οι δοκιμές είναι ουσιαστικές.

Ναι. Η Τεχνητή Νοημοσύνη μπορεί να προτείνει τις τιμές assertEquals έναντι των τιμών assertSame ή assertArrayEquals με βάση αυτά που συγκρίνετε. Αυτό μειώνει τα συνηθισμένα λάθη, όπως τον έλεγχο αναφορών όταν σκοπεύατε να συγκρίνετε τιμές.

Η assertEquals ελέγχει την ισότητα τιμών χρησιμοποιώντας τη μέθοδο equals(). Η assertSame ελέγχει ότι δύο αναφορές δείχνουν ακριβώς στο ίδιο αντικείμενο στη μνήμη. Δύο αντικείμενα ίσης τιμής μπορεί να αποτύχουν στην assertSame.

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

Συνοψίστε αυτήν την ανάρτηση με: