Τόσο το Testng όσο και το Junit είναι το πλαίσιο δοκιμών που χρησιμοποιείται για τη δοκιμή μονάδας. Το TestNG είναι παρόμοιο με το JUnit. Λίγες περισσότερες λειτουργίες προστίθενται σε αυτό που κάνει το TestNG πιο ισχυρό από το JUnit.
Αυτό το σεμινάριο εστιάζεται κυρίως στην ανάλυση των δυνατοτήτων των JUnit και TestNG. Βοηθά τους προγραμματιστές να αποφασίσουν ποιο πλαίσιο πρέπει να χρησιμοποιηθεί για τη δοκιμή μονάδας. Ας αναλύσουμε πρώτα τις ομοιότητες μεταξύ TestNG και JUnit4.
Το TestNG είναι ένα πλαίσιο δοκιμών εμπνευσμένο από τους JUnit και NUnit.
Εδώ είναι ο πίνακας που δείχνει τις δυνατότητες που υποστηρίζονται από το JUnit και το TestNG.
Σύγκριση χαρακτηριστικών JUnit4 και TestNG
Τόσο το TestNG όσο και το JUnit4 μοιάζουν, εκτός από ένα ή δύο χαρακτηριστικά. Ας κάνουμε μια σύγκριση μεταξύ των δύο για να αποφασίσουμε γρήγορα, ποια τεχνολογία είναι πιο ευνοϊκή για τη Δοκιμή μονάδας. Στον παρακάτω πίνακα επισημαίνονται τα χαρακτηριστικά που υποστηρίζονται και από τα δύο:
Σχολιασμοί
Τόσο το JUnit όσο και το TestNG χρησιμοποιούν σχολιασμούς και σχεδόν όλοι οι σχολιασμοί μοιάζουν.
Το TestNG χρησιμοποιεί @BeforeMethod, @ AfterMethod παρόμοιο με το @Before, @ After στο JUnit4.
Τόσο το TestNG όσο και το Junit4 χρησιμοποιεί το @Test (timeout = 1000) για χρονικό όριο. Ελέγξτε τον παρακάτω πίνακα για περισσότερες λεπτομέρειες-
SN | Περιγραφή | ΔοκιμήNG | JUnit 4 |
---|---|---|---|
1 | Δοκιμή σχολιασμού | @Δοκιμή | @Δοκιμή |
2 | Εκτελείται πριν από την κλήση της πρώτης μεθόδου δοκιμής στην τρέχουσα τάξη | @Πριν το μάθημα | @Πριν το μάθημα |
3 | Εκτελείται μετά από όλες τις μεθόδους δοκιμής στην τρέχουσα τάξη | @Μετά το μάθημα | @Μετά το μάθημα |
4 | Εκτελείται πριν από κάθε μέθοδο δοκιμής | @BeforeMethod | @Πριν |
5 | Εκτελείται μετά από κάθε μέθοδο δοκιμής | @AfterMethod | @Μετά |
6 | σχολιασμός για να αγνοήσετε μια δοκιμή | @Test (ενεργοποίηση = false) | @αγνοώ |
7 | σχολιασμός για εξαίρεση | @Test (توقعExceptions = ArithmeticException.class) | @Test (αναμένεται = ArithmeticException.class) |
8 | τέλος χρόνου | @ Δοκιμή (χρονικό όριο = 1000) | @ Δοκιμή (χρονικό όριο = 1000) |
9 | Εκτελείται πριν από όλες τις δοκιμές στη σουίτα | @BeforeSuite | α / α |
10 | Εκτελείται μετά από όλες τις δοκιμές στη σουίτα | @AfterSuite | α / α |
11 | Εκτελείται πριν από τη δοκιμή | @BeforeTest | α / α |
12 | Εκτελείται μετά την εκτέλεση μιας δοκιμής | @AfterTest | α / α |
13 | Εκτελείται πριν από την επίκληση της πρώτης μεθόδου δοκιμής που ανήκει σε οποιαδήποτε από αυτές τις ομάδες | @BeforeGroups | α / α |
14 | τρέξτε μετά την τελευταία μέθοδο δοκιμής που ανήκει σε οποιαδήποτε από τις ομάδες εδώ | @AfterGroups | α / α |
Δοκιμή σουίτας
Οι σουίτες χρησιμοποιούνται για την εκτέλεση πολλαπλών δοκιμών μαζί. Οι σουίτες μπορούν να δημιουργηθούν χρησιμοποιώντας το TestNG και το JUnit4. Ωστόσο, οι σουίτες είναι πιο ισχυρές στο TestNG καθώς χρησιμοποιεί πολύ διαφορετική μέθοδο για την εκτέλεση δοκιμών. Ας το καταλάβουμε χρησιμοποιώντας απόσπασμα κώδικα όπως δίνεται παρακάτω:
Χρησιμοποιώντας το JUnit4
Η παρακάτω τάξη περιγράφει τη χρήση της σουίτας ενώ εργάζεστε με JUnit4:
πακέτο guru99.junit;εισαγωγή org.junit.runner.RunWith;εισαγωγή org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})δημόσια τάξη JunitTest {// Αυτή η τάξη παραμένει κενή, χρησιμοποιείται μόνο ως κάτοχος για τους παραπάνω σχολιασμούς}
Χρήση του TestNG
Το TestNG χρησιμοποιεί xml για να ομαδοποιήσει όλες τις δοκιμές σε ένα μέρος. Παρακάτω το xml περιγράφει τη χρήση της σουίτας ενώ συνεργάζεται με το TestNG
<τάξεις>
Παράβλεψη δοκιμής
Χρησιμοποιώντας και τα δύο μπορούμε να παραλείψουμε μια δοκιμή. Ας το δούμε χρησιμοποιώντας παράδειγμα κώδικα όπως δίνεται παρακάτω:
Χρησιμοποιώντας το JUnit4
Το παρακάτω απόσπασμα κώδικα περιγράφει τη χρήση του σχολιασμού @ignore ενώ εργάζεστε με το JUnit4:
@Αγνοώδημόσια κενή μέθοδος 1 (){System.out.println ("Χρησιμοποιώντας το @Ignore, αυτή η εκτέλεση αγνοείται");}
Χρήση του TestNG
Το παρακάτω απόσπασμα κώδικα περιγράφει τη χρήση σχολιασμού @Test (enabled = false) ενώ εργάζεστε με το TestNG:
@Test (ενεργοποιημένο = false)δημόσιο κενό TestWithException (){System.out.println ("Η μέθοδος πρέπει να αγνοηθεί καθώς δεν είναι ακόμη έτοιμη");}
Δοκιμή εξαίρεσης
Η δοκιμή εξαίρεσης είναι διαθέσιμη τόσο στο TestNG όσο και στο JUnit4. Χρησιμοποιείται για τον έλεγχο, ποια εξαίρεση απορρίπτεται από τη δοκιμή;
Χρησιμοποιώντας το JUnit4
Το παρακάτω απόσπασμα κώδικα περιγράφει τη χρήση της δοκιμής εξαίρεσης ενώ εργάζεστε με το JUnit4:
@Test (αναμένεται = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Χρήση του TestNG
Το παρακάτω απόσπασμα κώδικα περιγράφει τη χρήση της δοκιμής εξαίρεσης ενώ εργάζεστε με το TestNG:
@Test (توقعExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Τέλος χρόνου
Αυτή η δυνατότητα εφαρμόζεται τόσο στο TestNg όσο και στο JUnit4. Το Timeout χρησιμοποιείται για τον τερματισμό μιας δοκιμής που διαρκεί περισσότερο από τον καθορισμένο χρόνο (σε χιλιοστά του δευτερολέπτου).
Χρησιμοποιώντας το JUnit4
Το παρακάτω απόσπασμα κώδικα περιγράφει τη χρήση του τεστ χρονικού ορίου ενώ εργάζεστε με το JUnit4:
@ Δοκιμή (χρονικό όριο = 1000)δημόσια κενή μέθοδος 1 (){ενώ (αληθινό);}
Χρήση του TestNG
Το παρακάτω απόσπασμα κώδικα περιγράφει τη χρήση του τεστ χρονικού ορίου ενώ εργάζεστε με το TestNG:
@ Δοκιμή (timeOut = 1000)δημόσια κενή μέθοδος 1 (){ενώ (αληθινό);}
Παραμετροποιημένη δοκιμή
Το JUnit παρέχει μια ευκολότερη και ευανάγνωστη προσέγγιση στη δοκιμή, γνωστή ως Parameterized test. Τόσο το TestNG όσο και το JUnit υποστηρίζουν παραμετροποιημένη δοκιμή, αλλά διαφέρουν ως προς τον τρόπο που καθορίζουν την τιμή της παραμέτρου. Ας το δούμε ένα προς ένα.
Χρησιμοποιώντας το JUnit4
Οι σχολιασμοί "@RunWith" και "@Parameter" χρησιμοποιούνται για την παροχή τιμής παραμέτρου για τη δοκιμή μονάδας. Ο σχολιασμός @Parameters πρέπει να επιστρέψει Λίστα []. Αυτή η παράμετρος θα περάσει στον κατασκευαστή κλάσης ως όρισμα.
@RunWith (τιμή = Parameterized.class)δημόσια τάξη JunitTest {αριθμός ιδιωτικού;δημόσιο JunitTest6 (αριθμός int){this.number = number;}@Παράμετροιδημόσια στατική συλλογή
Χρήση του TestNG
Στο TestNG, το αρχείο XML ή το "@DataProvider" χρησιμοποιείται για την παροχή μιας παραμέτρου για δοκιμή.
Εδώ ο σχολιασμός @Parameters που δηλώνεται στη μέθοδο, χρειάζεται μια παράμετρο για δοκιμή. Τα δεδομένα που χρησιμοποιούνται ως παράμετρος θα παρέχουν στα αρχεία διαμόρφωσης XML του TestNG. Με αυτόν τον τρόπο, μπορούμε να επαναχρησιμοποιήσουμε μια μεμονωμένη δοκιμαστική θήκη με διαφορετικά σύνολα δεδομένων και μπορούμε να έχουμε διαφορετικά αποτελέσματα.
δημόσια τάξη Test1 {@Δοκιμή@Parameters (τιμή = "αριθμός")public void parameterTest (αριθμός int){System.out.println ("Ο παράμετρος αριθμός είναι: + αριθμός);}}
Δείτε παρακάτω το αρχείο xml που θα χρησιμοποιηθεί για την παραπάνω κλάση:
<όνομα παραμέτρου = "αριθμός" τιμή = "2" /><τάξεις>
Περίληψη :
Είδαμε λεπτομερώς τη σύγκριση JUnit4 και TestNG. Είδαμε επίσης ότι τα δύο είναι παρόμοια εκτός από την παραμετροποιημένη δοκιμή και τη δοκιμή εξάρτησης. Εν ολίγοις, μπορούμε να πούμε, με βάση την ευελιξία και την απαίτηση μπορούμε να επιλέξουμε οποιοδήποτε από αυτά για δοκιμή μονάδας.
- Επόμενο