testng annotations listeners
Αυτό το σεμινάριο εξηγεί τους διαφορετικούς τύπους σχολιασμών TestNG και ακροατών. Θα μάθετε επίσης πώς να χρησιμοποιείτε τους σχολιασμούς και τους ακροατές του TestNG με παραδείγματα:
Εδώ, θα εκτελέσουμε ένα βασικό πρόγραμμα TestNG χρησιμοποιώντας σχολιασμούς TestNG και επίσης θα δούμε το ρόλο των ακροατών TestNG και πώς να τα χρησιμοποιήσουμε στις δοκιμές.
=> Διαβάστε μέσω της σειράς Easy TestNG Training.
Τι θα μάθετε:
Τι είναι οι σχολιασμοί TestNG;
Αυτά είναι το πρόγραμμα ή η επιχειρηματική λογική που χρησιμοποιούνται για τον έλεγχο της ροής των μεθόδων. Παίζουν πολύ σημαντικό ρόλο στο TestNG. Αυτοί οι σχολιασμοί διαφέρουν σε κάθε έργο σύμφωνα με τις απαιτήσεις. Η ροή των σχολιασμών παραμένει η ίδια σε κάθε πρόγραμμα παρά τις διαφορετικές απαιτήσεις.
Υπάρχουν διαφορετικοί τύποι σχολιασμών TestNG που κάνουν το TestNG πιο εύκολο και καλύτερο από το JUnit. Κάθε ένας από αυτούς τους σχολιασμούς θα εκτελείται σε ένα συγκεκριμένο συμβάν στο TestNG.
Τύποι σχολιασμών στο TestNG
Παρακάτω δίνονται οι λίστες σχολιασμών και τα χαρακτηριστικά τους που χρησιμοποιούνται στο TestNG. Ας εξερευνήσουμε λεπτομερώς αυτούς και τις χρήσεις τους.
Πριν
- @BeforeSuite: Αυτή η μέθοδος θα εκτελεστεί πριν από την εκτέλεση όλων των δοκιμών στη σουίτα.
- @BeforeTest: Αυτή η μέθοδος θα εκτελεστεί προτού δηλωθεί κάθε ενότητα δοκιμής στη σουίτα.
- @Πριν το μάθημα: Αυτή η μέθοδος θα εκτελεστεί πριν από την πρώτη μέθοδο δοκιμής στην τρέχουσα τάξη.
- @BeforeMethod: Αυτή η μέθοδος θα εκτελεστεί πριν από κάθε μέθοδο δοκιμής.
- @BeforeGroups: Αυτή η μέθοδος θα εκτελεστεί προτού αναφερθεί οποιαδήποτε μέθοδος δοκιμής της καθορισμένης ομάδας.
- @Δοκιμή : Επισημαίνει μια τάξη ή μια μέθοδο ως μέρος του τεστ. Ή μπορούμε να πούμε ότι κάνει μια μέθοδο ως μέθοδο δοκιμής.
Μετά
- @AfterSuite: Αυτή η μέθοδος θα εκτελεστεί μετά την εκτέλεση όλων των δοκιμών στη σουίτα.
- @AfterTest: Αυτή η μέθοδος θα εκτελεστεί αφού δηλωθεί κάθε ενότητα δοκιμής στη σουίτα.
- @Μετά το μάθημα: Αυτή η μέθοδος θα εκτελεστεί μετά την τελευταία μέθοδο δοκιμής της τάξης.
- @AfterMethod: Αυτή η μέθοδος θα εκτελεστεί μετά την εκτέλεση κάθε μεθόδου δοκιμής.
- @AfterGroups: Αυτή η μέθοδος θα εκτελεστεί μετά την εκτέλεση της τελευταίας μεθόδου δοκιμής της καθορισμένης ομάδας.
Ροή εργασίας σχολιασμών
Όταν εκτελούμε το αρχείο TestNG.xml, οι σχολιασμοί TestNG θα εκτελεστούν με την ακόλουθη ακολουθία:
Πριν από τη σουίτα-> Πριν από τη δοκιμή-> Πριν από την τάξη-> Πριν από τη μέθοδο-> @ Δοκιμή -> μετά τη μέθοδο-> μετά την τάξη-> μετά τη δοκιμή-> μετά τη σουίτα
@BeforeSuite @BeforeTest @BeforeClass @BeforeMethod @Test @AfterMethod @AfterClass @AfterTest @AfterSuite
@Δοκιμή έχει πολλά άλλα χαρακτηριστικά που μας βοηθούν στην αποτελεσματικότερη εκτέλεση των δοκιμαστικών μας περιπτώσεων.
Ακολουθούν οι τύποι χαρακτηριστικών και οι περιγραφές τους με παραδείγματα.
# 1) Πάντα Εκτελέστε: Όταν οριστεί σε true, αυτή η μέθοδος θα εκτελεστεί ακόμα κι αν εξαρτάται από μια μέθοδο που έχει αποτύχει.
Παράδειγμα: Δοκιμή (πάνταRun = true)
# 2) Παροχέας δεδομένων : Αυτό δείχνει το όνομα του παρόχου δεδομένων για αυτήν τη μέθοδο. Έχει μόνο χαρακτηριστικά, δηλαδή όνομα. Μπορούμε να το χρησιμοποιήσουμε όταν δοκιμάζουμε το λογισμικό μας με πολλά σύνολα δεδομένων κατά το χρόνο εισαγωγής ή το χρόνο εκτέλεσης. Αυτό είναι επίσης γνωστό ως δοκιμή βάσει δεδομένων. Μπορούμε να κάνουμε δοκιμές βάσει δεδομένων χρησιμοποιώντας αυτό το χαρακτηριστικό.
Παράδειγμα: @dataProvider (όνομα = 'TestData')
# 3) dataProviderClass : Αυτό το χαρακτηριστικό θα σας επιτρέψει να καθορίσετε την κατηγορία παροχέα δεδομένων η οποία θα περιέχει τον πάροχο δεδομένων που θα χρησιμοποιεί η μέθοδος @Test.
Παράδειγμα: @Test (dataProvider = 'Δοκιμή δεδομένων πελάτη', dataProviderClass = ClientDetailsTest.class)
# 4) εξαρτάται από τις Ομάδες : Αυτό το χαρακτηριστικό εξαρτάται από τη λίστα των ομάδων, δηλαδή η μέθοδος δοκιμής θα ξεκινήσει την εκτέλεση μόνο μετά την εκτέλεση των εξαρτημένων ομάδων.
Σημείωση : Εάν κάποια από τις δοκιμές στις ομάδες που εξαρτώνται αποτυγχάνει, τότε θα παραλείψει αυτόν τον έλεγχο.
Ακολουθεί το παράδειγμα:
@Test(groups= “homepage”) public void homepageTest(){ System.out.println('Home Page displayed successfully'); } @Test(groups= “transactionspage”) Public void transactionpageTest(){ System.out.println(“Transaction Page displayed successfully”); } @Test(dependsOnGroups={“homepage”, “transactionspage”}) public void dependOnGroupTest1(){ System.out.println(“dependency tested successful”);
# 5) εξαρτάται από τις μεθόδους : Αυτός ο σχολιασμός εξαρτάται από τη λίστα των μεθόδων. Αυτό σημαίνει ότι η μέθοδος δοκιμής θα ξεκινήσει την εκτέλεση μόνο μετά την εκτέλεση των εξαρτημένων μεθόδων.
Σημείωση : Εάν κάποια από τις δοκιμές σε μεθόδους που εξαρτώνται αποτυγχάνει, θα παραλείψει αυτόν τον έλεγχο.
Παράδειγμα:
@Test public void loginTest() { System.out.println(“Login Tested Successfully”); } @Test public void homepageTest() { System.out.println(“Home Page Tested Successfully”); } @Test(dependsOnMethods={“ loginTest”, “homepageTest”}) public void smokeTest() { System.out.println(“Smoke Tests were done successfully”);
# 6) πάνταRun = true: Μπορούμε να ορίσουμε τα χαρακτηριστικά μιας μεθόδου δοκιμής σε αληθινά και αυτό θα αναγκάσει την εκτέλεση του τεστ ακόμη και αν ορισμένες από τις δοκιμές της ομάδας εξαρτώνται από αποτυχία.
Για παράδειγμα:
@Test public void launchAppTest() { System.out.println(“Application launched Successfully”); } @Test public void loginAppTest() { System.out.println(“Application logged in Successfully”); } @Test(dependsOnMethods={“launchAppTest”, “loginAppTest”}, alwaysRun=true) public void smokeTest() { System.out.println(“Smoke Test were done successfully”); }
# 7) περιγραφή : Αυτό παρέχει την περιγραφή για τη μέθοδο. Γενικά, περιέχει μια περίληψη μιας γραμμής.
Παράδειγμα:
@Test(description = “Regression Test Summary”)
# 8) ενεργοποιημένο : Αυτό το χαρακτηριστικό βοηθά στον προσδιορισμό εάν θέλουμε να εκτελέσουμε / εκτελέσουμε τη συγκεκριμένη μέθοδο δοκιμής στην τρέχουσα σουίτα / τάξη ή όχι. Μερικές φορές δεν θέλουμε να εκτελέσουμε μερικές δοκιμές για κάποιους λόγους, όπως η απαίτηση / λειτουργία αλλάζει συχνά και δεν θέλουμε να διαταράξουμε την τρέχουσα εκτέλεση για τη συγκεκριμένη λειτουργία.
Σε αυτές τις περιπτώσεις, μπορούμε απλώς να αγνοήσουμε / απενεργοποιήσουμε τη συγκεκριμένη δοκιμή, ορίζοντας αυτήν τη δυνατότητα ως @Test (enabled = false).
Παράδειγμα:
@Test(enabled = false) public void imageTest() {//We have disabled this test by giving enabled=false System.out.println(“Image was tested successfully()”); }
# 9) αναμενόμενες εξαιρέσεις : Αυτό το χαρακτηριστικό εμφανίζει τη λίστα των εξαιρέσεων που θα χρησιμοποιήσει η μέθοδος δοκιμής στο χρόνο εκτέλεσης. Εάν δεν υπάρχουν εξαιρέσεις ή οποιαδήποτε άλλη εξαίρεση για τη μέθοδο, τότε το τεστ χαρακτηρίζεται ως αποτυχία.
Παράδειγμα:
@Test(expectedExceptions = ArithmeticException.class) public void numericTest() { int i = 1 / 0; }
# 10) ομάδες : Αυτό το χαρακτηριστικό χρησιμοποιείται για να καθορίσει τις ομάδες στις οποίες ανήκει η μέθοδος δοκιμής.
@Test(groups = {“Regression”}) Public void runRegressionTest(){ System.out.println(“test runs were successful”); }
# 11) προτεραιότητα : Αυτό βοηθά στην ιεράρχηση των μεθόδων δοκιμής, ενώ η προεπιλεγμένη προτεραιότητα ξεκινά με 0 και οι δοκιμές εκτελούνται με αύξουσα σειρά.
Παράδειγμα:
@Test Public void launchApp(){ System.out.println(“Application was launched successfully”): } @Test (priority = 1) Public void loginApp(){ System.out.println(“Application logged in successfully”); } @Test (priority = 2) Public void checkTrans(){s System.out.println(“Checked Transactions successfully”); }
Αποτελέσματα: Ακολουθούν τα αποτελέσματα σύμφωνα με την προτεραιότητα, παρόλο που δεν έχει ανατεθεί κανένας αριθμός στην πρώτη δοκιμή, πήρε την προτεραιότητά του από προεπιλογή ως 0 και η εκτέλεση έγινε με αύξουσα σειρά.
Πέρασε: launchApp
Πέρασε: loginApp
Πέρασε: checkTrans
# 12) χρονικό όριο : Αυτό το χαρακτηριστικό βοηθά στον καθορισμό μιας τιμής χρονικού ορίου για τη δοκιμή (χρησιμοποιείται συνήθως ως χιλιοστά του δευτερολέπτου). Εάν η δοκιμή διαρκεί περισσότερο από την καθορισμένη τιμή χρονικού ορίου, τότε η δοκιμή επισημαίνεται ως αποτυχία. Μπορούμε να χρησιμοποιήσουμε αυτό το χρονικό όριο για να κάνουμε μια δοκιμή απόδοσης, για να βεβαιωθούμε ότι η μέθοδος επιστρέφει εντός εύλογου χρονικού διαστήματος.
@Test(timeOut = 500) public void timeTest() throws InterruptedException { Thread.sleep(400); System.out.println(“Time test method successfully tested”); }
# 13) επίκλησηCount : Αυτό το χαρακτηριστικό βοηθά στον προσδιορισμό του αριθμού των φορών που πρέπει να γίνει χρήση μιας μεθόδου δοκιμής.
@Test(invocationCount = 5) public void loginTest() { WebDriver driver = new FirefoxDriver(); driver.get('http://www.google.com'); System.out.println('Page Title is ' + driver.getTitle()); driver.quit();
Παραγωγή:
Ο τίτλος της σελίδας είναι Google
Ο τίτλος της σελίδας είναι Google
Ο τίτλος της σελίδας είναι Google
Ο τίτλος της σελίδας είναι Google
Ο τίτλος της σελίδας είναι Google
# 14) invocationTimeOut: Αυτός είναι ο μέγιστος χρόνος (αριθμός χιλιοστών του δευτερολέπτου) που πρέπει να λάβει αυτή η δοκιμή για όλες τις μετρήσεις επίκλησης. Αυτή η μέθοδος πρέπει να χρησιμοποιηθεί μαζί με τη μέθοδο καταμέτρησης επίκλησης αλλιώς θα αγνοηθεί.
Παράδειγμα:
@Test(invocationCount=4, invocationTimeOut=4000) public void loginTest(){ Thread.sleep(1000); System.Out.println(“login Test”); }
Το παραπάνω παράδειγμα δείχνει ότι αυτή η δοκιμή θα διαρκέσει συνολικά 4 δευτερόλεπτα για την εκτέλεση και κάθε φορά που η δοκιμή καλείται / εκτελεστεί, θα χρειαζόταν 1 δευτερόλεπτο για την εκτέλεση.
# 15) @DataProvider : Αυτή η μέθοδος βοηθά στην παροχή δεδομένων για μια δοκιμαστική μέθοδο. Αρχικά, πρέπει να δηλώσουμε μια μέθοδο που σχολιάστηκε από το @DataProvider και στη συνέχεια να χρησιμοποιήσουμε αυτήν τη μέθοδο στην απαιτούμενη μέθοδο δοκιμής χρησιμοποιώντας το χαρακτηριστικό 'DataProvider' στο σχολιασμό @Test.
Ένας πάροχος δεδομένων επιστρέφει έναν πίνακα αντικειμένων, ειδικά έναν δισδιάστατο πίνακα αντικειμένων () (). Ο πρώτος πίνακας αντιπροσωπεύει ένα σύνολο δεδομένων και ο δεύτερος πίνακας περιέχει τις παραμέτρους.
@DataProvider (όνομα = 'Δοκιμή') - Εδώ, το όνομα αντιπροσωπεύει το όνομα του Παροχέα δεδομένων. Εάν δεν δοθεί το όνομα, τότε το όνομα του DataProvider θα ρυθμιστεί αυτόματα στο όνομα της μεθόδου.
Παράδειγμα:
@DataProvider(name = “Name”) public object()() credentials(){ return new object ()() { { “Mohan”, “23”}, { “Shikhar”, “30”} }; } //Now we are calling the Data Provider object by its name @Test(DataProvider = “Name”) Public void testData(String sName, int age) { System.out.println(“Data is: (Name, age)”); }
# 16) @ Εργοστάσιο : Χρησιμοποιείται για τον καθορισμό μιας μεθόδου ως εργοστασιακό για την παροχή αντικειμένων που πρόκειται να χρησιμοποιηθούν από το TestNG για τις δοκιμαστικές του κατηγορίες. Χρησιμοποιώντας το @Factory, μπορούμε να δημιουργήσουμε δυναμικές δοκιμές στο χρόνο εκτέλεσης και θα πρέπει να επιστρέψει ένα αντικείμενο πίνακα.
Παράδειγμα:
Ας πάρουμε ένα παράδειγμα για να το κατανοήσουμε καλύτερα. Θα δημιουργήσουμε δύο κατηγορίες, δηλαδή FactorySample.Java και FactoryTest.Java
FactorySample.Java
public class FactorySample { @Test public void googleTest() { System.out.println(“Google was launched successfully”); } @Test public void gmailLogin() { System.out.println(“Gmail logged in successfully”); }
FactoryTest.Java
public class FactoryTest { @Factory() public Object() testFact() { FactorySample fs = new FactorySample(2); fs(0) = new googleTest(); fs(1) = new gmailLogin(); return fs; } }
Παραγωγή : Η Google κυκλοφόρησε με επιτυχία
Το Gmail συνδέθηκε με επιτυχία
Διαφορά μεταξύ σχολίων @Factory και @DataProvider
Υπάρχει μια βασική διαφορά μεταξύ των δύο σχολιασμών. Υπάρχει μεγάλη σύγχυση σχετικά με αυτούς τους δύο σχολιασμούς, όπως πού να τα χρησιμοποιήσετε και γιατί;
Ας βρούμε τις απαντήσεις.
@DataProvider: Αυτός ο σχολιασμός θα παραμετροποιήσει τη συγκεκριμένη μέθοδο δοκιμής και θα εκτελέσει τη δοκιμή σε ένα συγκεκριμένο αριθ. φορές βάσει των δεδομένων που παρέχονται από αυτήν τη μέθοδο.
Για παράδειγμα, Εάν υπάρχουν δύο παράμετροι, τότε η μέθοδος δοκιμής θα εκτελεστεί δύο φορές. Για παράδειγμα, εάν θέλουμε να συνδεθούμε σε έναν ιστότοπο με διαφορετικά σύνολα ονομάτων χρήστη και κωδικών πρόσβασης κάθε φορά, τότε αυτό είναι χρήσιμο καθώς πρέπει να παρέχουμε τις παραμέτρους για δοκιμή.
@Εργοστάσιο : Αυτό θα εκτελέσει όλες τις μεθόδους δοκιμής που υπάρχουν μέσα στο αρχείο δοκιμαστικής κλάσης, ενώ χρησιμοποιεί μια ξεχωριστή παρουσία αυτής της κλάσης. Αυτό είναι χρήσιμο αν θέλουμε να εκτελέσουμε την δοκιμαστική τάξη πολλές φορές.
Για παράδειγμα , εάν πρέπει να δοκιμάσουμε τη λειτουργία σύνδεσης οποιασδήποτε εφαρμογής ή ιστότοπου και καθώς πρέπει να εκτελέσουμε αυτήν τη δοκιμή πολλές φορές, είναι καλύτερα να χρησιμοποιήσουμε το @Factory όπου μπορούμε να δημιουργήσουμε πολλές παρουσίες δοκιμής και να εκτελέσουμε τις δοκιμές.
Ας ρίξουμε μια ματιά σε αυτά τα παραδείγματα για να μάθουμε τη διαφορά.
Παράδειγμα @DataProvider :
@DataProvider public Object()() message(){ return new Object ()(){{“Mihir” , new Integer (145632)}, {“Kumar”, new Integer (28242)}}; } @Test (dataProvider=”message”) public void PrintMsg(String name, Integer id){ System.out.println(“Names are: “+name+” “+id); }
Σημείωση : Στο παραπάνω πρόγραμμα έχουμε παράσχει δύο δεδομένα και το αποτέλεσμα του προγράμματος θα είναι:
Τα ονόματα είναι: Mihir 145632
Τα ονόματα είναι: Kumar 28242
Αυτό δείχνει ότι εάν αυξήσουμε τον αριθμό των δεδομένων στη μέθοδο μηνυμάτων, τότε η μέθοδος εκτύπωσης θα εκτελέσει τον ίδιο αριθμό φορών.
Παράδειγμα @Factory :
Το TestNG Factory είναι πολύ χρήσιμο όταν πρέπει να εκτελέσουμε πολλές κατηγορίες δοκιμών χρησιμοποιώντας μία μόνο κλάση δοκιμών.
Ας δούμε ένα παράδειγμα.
Για αυτό, πρέπει να δημιουργήσουμε δύο τάξεις δοκιμών με λίγες μεθόδους δοκιμής μέσα σε αυτές.
Δεδομένα δοκιμής 1:
public class TestData1 { @Test public void testData1() { System.out.println('Test data 1 successfully tested'); } }
Δεδομένα δοκιμής 2:
public class TestData2 { @Test public void testData2() { System.out.println('Test data 2 successfully tested'); } }
Τώρα πρέπει να καθορίσουμε τη μέθοδο @Factory η οποία επιστρέφει έναν πίνακα αντικειμένων των παραπάνω καθορισμένων κλάσεων.
Εργοστασιακό πρόγραμμα:
public class TestNGFactory { @Factory() public Object() getTestClass() { Object() tests = new Object(2); tests(0) = new Test Data 1(); tests(1) = new Test Data 2(); return tests; } }
Παραγωγή:
Μέθοδος δοκιμής Test1
Μέθοδος δοκιμής Test2
PASSED: δοκιμή1
PASSED: δοκιμή2
Ακρόαση TestNG με τύπους
Με απλούς όρους, οι ακροατές ακούνε το συμβάν που ορίζεται στο σενάριο Selenium και συμπεριφέρονται ανάλογα. Ο κύριος σκοπός είναι η δημιουργία αρχείων καταγραφής και η προσαρμογή των αναφορών TestNG.
Υπάρχουν πολλοί τύποι ακροατών διαθέσιμων στο TestNG.
Για παράδειγμα , IAnnotationTransformer, IAnnotationTransformer2, IConfigurable, IConfigurationListener, IConfigurationListener2, IExecutionListener, IHookable, IInvokedMethodListener, IInvokedMethodListener2, IMethodInterceptor, IReporter, ISuiteListener, ITest
Ωστόσο, όταν πρόκειται για δοκιμές, χρησιμοποιούμε μόνο μερικά από αυτά όπως συζητείται παρακάτω:
# 1) ISuiteListener
Αυτός είναι ένας ακροατής για δοκιμαστικές σουίτες. Αποτελείται από δύο μεθόδους, δηλαδή onStart () και onFinish () .
Κάθε φορά που εφαρμόζουμε αυτόν τον ακροατή, θα εγγυάται ότι ο τελικός χρήστης θα επικαλεστεί τις μεθόδους onStart () και onFinish () πριν και μετά την εκτέλεση μιας σουίτας TestNG.
Λεπτομέρειες μεθόδου:
void onStart (σουίτα ISuite) : Αυτή η μέθοδος καλείται πριν ξεκινήσει το Suite Runner.
void onFinish (ISuite σουίτα) : Αυτή η μέθοδος επικαλείται αφού το Suite Runner εκτελέσει όλες τις δοκιμαστικές σουίτες.
Παράδειγμα:
@Override public void onStart(ISuite suite) { System.out.println(“TestNG Suite Starts”); } @Override public void onFinish(ISuite suite) { System.out.println(“TestNG Suite Finishes”); }
# 2) ITestListener
Αυτός ο ακροατής λειτουργεί ακριβώς όπως το ISuiteListener. Ωστόσο, η μόνη διαφορά είναι ότι πραγματοποιεί την κλήση πριν και μετά το Test και όχι το Suite. Είναι ένας ακροατής για δοκιμή που εκτελείται και αυτός ο ακροατής έχει επτά μεθόδους σε αυτό.
(i) onStart () :Αυτή η μέθοδος καλείται μετά την έναρξη της δοκιμαστικής κλάσης και πριν από την κλήση οποιασδήποτε μεθόδου διαμόρφωσης.
Παράδειγμα:
@Override public void onStart(ITestContext context) { System.out.println(“Context Name = ” + context.getName()); }
(ii) onFinish () :Αυτή η μέθοδος καλείται μετά την εκτέλεση όλων των δοκιμών και την κλήση όλων των μεθόδων διαμόρφωσης.
Παράδειγμα:
public void onFinish(ITestContext context) { System.out.println(context.getPassedTests()); }
(iii) onTestStart () :Αυτή η μέθοδος καλείται κάθε φορά πριν από την επίκληση μιας δοκιμής. Το ITestResult συμπληρώνεται μόνο εν μέρει με τις αναφορές στην τάξη, τη μέθοδο, τα millis εκκίνησης και την κατάσταση.
Μέθοδος: void onTestStart (αποτέλεσμα ITestResult)
Παράδειγμα:
@Override public void onTestStart(ITestResult result) { System.out.println('Test Started…'+result.getStartMillis()); }
(iv) onTestSuccess () :Αυτή η μέθοδος καλείται κάθε φορά που επιτυγχάνεται μια δοκιμή.
Μέθοδος: void onTestSuccess (αποτέλεσμα ITestResult)
Παράδειγμα:
@Override public void onTestSuccess(ITestResult result) { System.out.println('Test Success. '+result.getEndMillis()); }
(v) onTestFailure () :Αυτή η μέθοδος καλείται κάθε φορά που μια δοκιμή αποτυγχάνει.
Μέθοδος: void onTestFailure (αποτέλεσμα ITestResult)
Παράδειγμα:
@Override public void onTestFailure(ITestResult result) { System.out.println('Test Failed. '+result.getTestName()); }
(vi) onTestSkipped () :Αυτή η μέθοδος καλείται κάθε φορά που παραλείπεται μια δοκιμή.
Μέθοδος: void onTestSkipped (αποτέλεσμα ITestResult)
Παράδειγμα:
@Override public void onTestSkipped(ITestResult result) { System.out.println('Test Skipped. '+result.getTestName()); }
(vii) onTestFailedButWithinSuccessPercentage :Αυτή η μέθοδος καλείται κάθε φορά που μια μέθοδος αποτυγχάνει αλλά έχει σχολιαστεί με ποσοστό επιτυχίας και η αποτυχία τη διατηρεί εντός του ποσοστού επιτυχίας.
Μέθοδος: void onTestFailedButWithinSuccessPercentage (αποτέλεσμα ITestResult)
Παράδειγμα:
@Override public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) { System.out.println('Test failed but it is in defined success ratio ' + getTestMethodName(iTestResult)); }
# 3) IExecutionListener
Είναι ένας ακροατής που παρακολουθεί την αρχή και το τέλος μιας δοκιμής TestNG. Έχει δύο μεθόδους, δηλαδή onExecutionStart () και onExecutionFinish () .
Η μέθοδος onExecutionStart () καλείται πριν το TestNG ξεκινήσει να εκτελεί τις σουίτες και η μέθοδος onExecutionFinish () καλείται αφού ολοκληρωθεί το TestNG με την εκτέλεση όλων των δοκιμαστικών σουιτών.
Μέθοδος:
void onExecutionStart ()
void onExecutionFinish ()
Παράδειγμα:
@Override public void onExecutionStart() { System.out.println('TestNG is going to start'); } @Override public void onExecutionFinish() { System.out.println('TestNG is finished'); }
# 4) IInvokedMethodListener
Είναι ένας ακροατής που καλείται πριν και μετά την επίκληση μιας μεθόδου από το TestNG. Αυτός ο ακροατής καλείται μόνο για διαμορφώσεις και μεθόδους δοκιμής. Έχει μόνο δύο μεθόδους σε αυτό, δηλαδή μετά την επίκληση και πριν από την επίκληση.
- πριν από την επίκληση: Επικαλέστε πριν από κάθε μέθοδο.
- afterInocation: Επικαλέστε μετά από κάθε μέθοδο.
Μέθοδος:
void beforeInvocation (μέθοδος IInvokedMethod, ITestResult testResult)
void afterInvocation (μέθοδος IInvokedMethod, ITestResult testResult)
Παράδειγμα:
@Override public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { System.out.println('before invocation of ' + method.getTestMethod().getMethodName()); } @Override public void afterInvocation(IInvokedMethod method, ITestResult testResult) { System.out.println('after invocation of ' + method.getTestMethod().getMethodName()); }
# 5) IMethodInterceptor
Αυτή η τάξη χρησιμοποιείται για την αλλαγή της λίστας των μεθόδων δοκιμών που πρόκειται να εκτελέσει το TestNG. Με τη χρήση αυτής της μεθόδου μπορούμε να αναδιατάξουμε τη λίστα των μεθόδων δοκιμής.
Ισχύει μόνο για τις μεθόδους που δεν έχουν εξαρτώμενα άτομα και αυτές οι μέθοδοι που δεν εξαρτώνται από άλλες μεθόδους δοκιμής θα περάσουν σε παραμέτρους. Αυτή η διεπαφή θα επιστρέψει μια λίστα μεθόδων δοκιμής που πρέπει να εκτελεστούν αλλά με διαφορετικό τρόπο ταξινόμησης.
Μέθοδος:
οι καλύτεροι ιστότοποι για παρακολούθηση του anime
java.util.Παρακολούθηση λίστας (java.util.Λέθοδοι λίστας, περιβάλλον ITestContext)
Παράδειγμα:
@Override public Listintercept(Listmethods, ITestContext context) { List result = new ArrayList(); for (IMethodInstance m : methods) { Test test = m.getMethod().getMethod().getAnnotation(Test.class); Setgroups = new HashSet(); for (String group : test.groups()) { groups.add(group); } if (groups.contains('sanity')) { result.add(m); } else { String testMethod = m.getMethod().getMethodName(); System.out.println(testMethod + ' not a SANITY test so not included'); } } return result; }
# 6) IReporter
Αυτό υλοποιείται από τους πελάτες για τη δημιουργία μιας αναφοράς. Αυτή η μέθοδος θα χρησιμοποιηθεί όταν εκτελεστεί όλη η σουίτα και οι παράμετροι δίνουν όλα τα αποτελέσματα της δοκιμής που συνέβησαν κατά τη διάρκεια αυτής της εκτέλεσης.
Μέθοδος:
void createReport (java.util.List xmlSuites, java.util.List suites, java.lang.String outputDirectory)
Παράδειγμα:
@Override public void generateReport(List xmlSuites, List suites, String outdir) { try { writer = createWriter(outdir); } catch (IOException e) { System.err.println('Unable to create output file'); e.printStackTrace(); return; } startHtml(writer); writeReportTitle(reportTitle); generateSuiteSummaryReport(suites); generateMethodSummaryReport(suites); generateMethodDetailReport(suites); endHtml(writer); writer.flush(); writer.close(); }
συμπέρασμα
Σε αυτό το άρθρο, έχουμε δει πώς τα TestNG Annotations μπορούν να είναι χρήσιμα για να διευκολύνουμε τη λογική του Προγράμματος. Οι σχολιασμοί χρησιμοποιούνται όπως απαιτείται.
Μπορείτε να μεταβιβάσετε τις παραμέτρους στους σχολιασμούς και να κάνετε δοκιμές βάσει δεδομένων. Μπορείτε να εκτελέσετε τις δοκιμαστικές θήκες σε ομάδες και να εξοικονομήσετε χρόνο. Με τους ακροατές, μπορείτε ακόμη και να δημιουργήσετε τις αναφορές. Δεν νομίζετε ότι είναι υπέροχο;
Το TestNG.xml θα εξηγηθεί λεπτομερώς στο επερχόμενο σεμινάριό μας. Αυτό το αρχείο XML είναι η ραχοκοκαλιά του πλαισίου TestNG και θα μας βοηθήσει στην εκτέλεση των δοκιμαστικών μας περιπτώσεων.
=> Ανατρέξτε στον τέλειο οδηγό εκπαίδευσης TestNG εδώ.
Συνιστώμενη ανάγνωση
- Μάθετε πώς να χρησιμοποιείτε σχολιασμούς TestNG στο Σελήνιο (με παραδείγματα)
- Ισχυρισμοί στο Σελήνιο χρησιμοποιώντας πλαίσια Junit και TestNG
- Εισαγωγή στο JUnit Framework και τη χρήση του στο Σελήνιο Σενάριο - Σελήνιο Σεμινάριο # 11
- 30+ καλύτερα σεμινάρια σεληνίου: Μάθετε το σελήνιο με πραγματικά παραδείγματα
- TestNG Παράδειγμα: Τρόπος δημιουργίας και χρήσης του αρχείου TestNG.xml
- JMeter Listeners: Ανάλυση αποτελεσμάτων με διαφορετικούς ακροατές
- Πώς να χρησιμοποιήσετε το TestNG Framework για τη δημιουργία σεναρίων σεληνίου - TestNG Selenium Tutorial # 12
- Εκμάθηση Eclipse: Ενσωμάτωση TestNG στο Eclipse Java IDE