Prilagođeno izvještavanje s TestNG-om
1. Pregled
U ovom ćemo članku raspravljati o generiranju vlastite evidencije i izvješća pomoću TestNG-a.
TestNG nudi vlastitu značajku izvještavanja - generira izvješća u bilo kojem od HTML / XML formata. Ako se testovi izvode pomoću maven-surefire-plugin, izvješće će imati zadani oblik definiran dodatkom. Osim ugrađenog izvješćivanja, pruža mehanizam za lako prilagođavanje evidentiranih podataka i generiranih izvješća.
Ako želite započeti s osnovama TestNG-a, pogledajte ovaj članak.
2. Prilagođena prijava
Prije nego što implementiramo prilagođenu evidenciju, izvršimo izvršenje zadanih dnevnika mvn test naredba:
Izvršeni testovi: 11, neuspjesi: 1, pogreške: 0, preskočeni: 0, proteklo vrijeme: 1,21 sek <<< FAILURE! - u TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Proteklo vrijeme: 0,01 sek <<< FAILURE! java.lang.AssertionError: Test iz nekog razloga nije uspio na baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) Rezultati: Neuspjeli testovi: RegistrationTest.whenCalledFromSuite_thanOK: 15 Test nije uspio iz nekog razloga. Testovi su pokrenuti: 11, neuspjeh. 1, pogreške: 0, preskočene: 0 [POGREŠKA] Postoje neuspjesi testa.
Ti nam dnevnici ne daju nikakve informacije o redoslijedu izvršenja, niti o tome kada je određeno ispitivanje započeto / dovršeno itd.
Ako želimo znati rezultat svakog izvođenja zajedno s nekim prilagođenim podacima, možemo implementirati vlastite zapisnike i izvješća. TestNG pruža način implementacije prilagođenih izvješća i evidentiranja.
Jednostavno rečeno, možemo ili implementirati org.testng.ITestListener sučelje za prijavu ili org.testng.IReporter sučelje za izvještavanje. Ove implementirane klase dobivaju obavijesti o događajima poput početka, završetka, neuspjeha itd. O testovima i apartmanima.
Krenimo i implementiramo nekoliko jednostavnih prilagođenih zapisivanja:
javna klasa CustomizedListener implementira ITestListener {// ... @Override public void onFinish (ITestContext testContext) {LOGGER.info ("PROLAZENI TESTI"); testContext.getPassedTests (). getAllResults () .forEach (rezultat -> {LOGGER.info (result.getName ());}); LOGGER.info ("PROPALI SLUČAJEVI"); testContext.getFailedTests (). getAllResults () .forEach (rezultat -> {LOGGER.info (result.getName ());}); LOGGER.info ("Test je završen:" + testContext.getEndDate (). ToString ()); } // ...}
Primijetite kako smo nadjačali onFinish () metoda koja će se pozvati kad su sva izvršavanja testa dovršena i sve konfiguracije budu gotove. Slično tome, možemo nadjačati druge metode - poput onTestStart (), onTestFailure () itd. (a detalje o tim ostalim metodama pronađite ovdje).
Sad uključimo ovog slušatelja u XML konfiguraciju:
Jednom kada se izvrši, slušatelj će se pozivati za svaki događaj i bilježit će informacije kako smo ih implementirali. Ovo bi moglo biti korisno za otklanjanje pogrešaka u izvršenju testa.
Izlazni zapisnici:
... INFO CUSTOM_LOGS - započeo testiranje na: Sat Apr 22 14:39:43 IST 2017 INFO CUSTOM_LOGS - Testiranje: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - testirano: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Vrijeme snimanja: 6 ms INFO CUSTOM_LOGS - Testiranje: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - nije uspjelo: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - prošao test slučajeva INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - nije test slučajeva INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Ispitna završena: Sat Apr 22 14:39:43 IST 2017 ...
Prilagođeni dnevnici daju nam nedostajuće informacije u zadanim zapisnicima.
3. Prilagođena izvješća
Kada pokrenemo testove pomoću dodatka, on generira izvješća u HTML / XML formatima u izvještaji o ciljevima / izvještajima imenik:

Ako želimo pokrenuti određeni paket za testiranje pomoću datoteke TestNG XML, moramo ga navesti u dodatku surefire konfiguracija označiti:
src \ test \ resources \ parametrized_testng.xml
Nakon prilagođene evidencije, sada pokušajmo stvoriti neka prilagođena izvješća gdje implementiramo org.testng.IReporter sučelje i nadjačati generiraj izvještaj () metoda:
javna praznina generiraj izvještaj (Popis xmlSuites, Popis suita, String outputDirectory) {String reportTemplate = initReportTemplate (); Tijelo niza = apartmani .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); Niz izvješća = reportTemplate.replaceFirst ("", String.format ("% s", body)); saveReportTemplate (outputDirectory, report);}
Nadjačana metoda uzima tri argumenta:
- xmlSuite - sadrži popis svih apartmana spomenutih u XML datoteci
- apartmani - objekt popisa koji sadrži sve informacije o izvršenju testa
- outputDirectory - putanja direktorija gdje se generiraju izvještaji
Koristili smo initReportTemplate () metoda za učitavanje HTML predloška, suiteToResults () funkcija koja poziva na resultsToRow () funkcija za rukovanje unutarnjim dijelovima generiranja izvješća:
privatna funkcija suiteToResults () {return suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } privatna funkcija resultsToRows (ISuite suite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Postavi failedTests = testContext.getFailedTests (). GetAllResults (); Postavi passTests = testContext.getPassedTests (). GetAllResults (); Postavi skippedTests = testContext.getSkippedTests (). GetAllResults (); Niz suiteName = suite.getName (); vratiti Stream .of (neuspjeliTest, prošliTest, preskočeniTest) .flatMap (rezultati -> generiratiReportRows (e.getKey (), suiteName, results) .stream ()); }; }
i saveReportTemplate () za spremanje kompletnog rezultata.
Uključite izvjestitelja u XML konfiguracijsku datoteku:
Evo rezultata naših izvještaja:

U usporedbi sa zadanim sigurnim HTML izvješćem, ovo izvješće daje jasnu i jasnu sliku rezultata u jednoj tablici. Što je prikladnije i jednostavnije za čitanje.
4. Zaključak
U ovom smo brzom vodiču naučili kako generirati izvještaje o testiranju pomoću dodatka Surefire Maven. Također smo proučavali prilagodbu dnevnika i generiranje prilagođenih izvješća pomoću TestNG-a. Za više detalja o TestNG-u, poput pisanja test slučajeva, paketa itd., Pogledajte naš uvod
Za više detalja o TestNG-u, poput pisanja test slučajeva, apartmana, definitivno započnite s našim uvodnim člankom.
Kao i uvijek implementacija isječaka može se naći na GitHubu.