Vlastné vykazovanie pomocou TestNG
1. Prehľad
V tomto článku sa budeme zaoberať generovaním vlastného protokolovania a správ pomocou TestNG.
TestNG poskytuje vlastnú funkciu prehľadov - generuje správy vo formátoch HTML / XML. Ak sa testy vykonávajú pomocou maven-surefire-plugin, prehľad bude mať predvolenú formu definovanú doplnkom. Okrem vstavaného prehľadu poskytuje mechanizmus na ľahké prispôsobenie zaznamenaných informácií a generovaných prehľadov.
Ak chcete začať so základmi TestNG, prečítajte si tento článok.
2. Vlastné protokolovanie
Pred implementáciou vlastného protokolovania sa pozrime na predvolené protokoly vykonaním mvn test príkaz:
Spustené testy: 11, Zlyhania: 1, Chyby: 0, Vynechané: 0, Uplynutý čas: 1,21 s <<< PORUCHA! - v TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Uplynutý čas: 0,01 s <<< ZÁVADA! java.lang.AssertionError: Test zlyhal z nejakého dôvodu na baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) Výsledky: Neúspešné testy: RegistrationTest.whenCalledFromSuite_thanOK: 15 Test zlyhal z nejakého dôvodu Spustené testy: 11, zlyhania: 1, chyby: 0, preskočené: 0 [CHYBA] Vyskytli sa zlyhania testu.
Tieto protokoly nám neposkytujú žiadne informácie o poradí vykonania, ani o tom, kedy bol konkrétny test spustený / dokončený atď.
Ak chceme poznať výsledok každého behu spolu s nejakými vlastnými údajmi, môžeme implementovať vlastné protokoly a správy. TestNG poskytuje spôsob implementácie vlastných správ a protokolovania.
Jednoducho povedané, môžeme implementovať: org.testng.ITestListener rozhranie pre prihlásenie alebo org.testng.IReporter rozhranie pre reporting. Tieto implementované triedy dostanú upozornenie na udalosti, ako sú začiatok, koniec, zlyhanie atď. Testov a balíkov.
Poďme do toho a implementujme niekoľko jednoduchých vlastných protokolovaní:
verejná trieda CustomisedListener implementuje ITestListener {// ... @Override public void onFinish (ITestContext testContext) {LOGGER.info ("PRENESENÉ PRÍPADY TESTU"); testContext.getPassedTests (). getAllResults () .forEach (výsledok -> {LOGGER.info (result.getName ());}); LOGGER.info ("Zlyhané testovacie prípady"); testContext.getFailedTests (). getAllResults () .forEach (výsledok -> {LOGGER.info (result.getName ());}); LOGGER.info ("Test bol dokončený dňa:" + testContext.getEndDate (). ToString ()); } // ...}
Všimnite si, ako sme prepísali onFinish () metóda, ktorá sa vyvolá, keď budú dokončené všetky vykonania testu a budú vykonané všetky konfigurácie. Podobne môžeme prepísať iné metódy - ako napr onTestStart (), onTestFailure () atď. (a ďalšie podrobnosti o týchto ďalších metódach nájdete tu).
Teraz zahrňme tohto poslucháča do konfigurácie XML:
Po vykonaní bude poslucháč vyvolaný pri každej udalosti a bude protokolovať informácie, ako sme ich implementovali. To by mohlo byť užitočné na ladenie vykonania nášho testu.
Výstupné protokoly:
... INFO CUSTOM_LOGS - začala testovanie na: Sat Apr 22 14:39:43 IST 2017 INFO CUSTOM_LOGS - Testovanie: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Testované: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Doba nutná: 6 ms INFO CUSTOM_LOGS - Testovanie: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Failed: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - PREDANÉ TESTOVACIE PRÍPADY INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - NEÚSPEŠNÉ TESTOVACIE PRÍPADY INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCor43:USTEST:_USTEN:CUSTOM:TEST__STEM_:TESTC_:TENCorrect:
Vlastné protokoly nám poskytujú chýbajúce informácie v predvolených protokoloch.
3. Vlastné správy
Keď spúšťame testy pomocou doplnku, generuje správy vo formáte HTML / XML v jazyku správy o cieľoch / surefire adresár:
Ak chceme spustiť konkrétnu testovaciu sadu pomocou súboru XML TestNG, musíme ju uviesť v zozname surefire-pluginu konfigurácia značka:
src \ test \ resources \ parametrized_testng.xml
Po prispôsobenom protokolovaní sa teraz pokúsime vytvoriť niekoľko vlastných prehľadov, kde implementujeme org.testng.IReporter rozhranie a prepísať generateReport () metóda:
public void generateReport (List xmlSuites, List suites, String outputDirectory) {String reportTemplate = initReportTemplate (); Reťazec body = suites .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); Reťazcový report = reportTemplate.replaceFirst ("", String.format ("% s", body)); saveReportTemplate (outputDirectory, report);}
Prepísaná metóda má tri argumenty:
- xmlSuite - obsahuje zoznam všetkých balíkov uvedených v súbore XML
- apartmány - objekt zoznamu obsahujúci všetky informácie o vykonaní testu
- outputDirectory - cesta k adresáru, kde sa generujú správy
Použili sme initReportTemplate () spôsob načítania šablóny HTML, suiteToResults () funkcia, ktorá vyvoláva resultsToRow () funkcia na spracovanie vnútorných častí generovania správy:
súkromná funkcia suiteToResults () {return suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } súkromná funkcia resultsToRows (ISuite suite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Nastaviť failedTests = testContext.getFailedTests (). GetAllResults (); Nastaviť passTests = testContext.getPassedTests (). GetAllResults (); Nastaviť skippedTests = testContext.getSkippedTests (). GetAllResults (); Reťazec suiteName = suite.getName (); return Stream .of (failedTests, passedTests, skippedTests) .flatMap (results -> generateReportRows (e.getKey (), suiteName, results) .stream ()); }; }
a saveReportTemplate () na uloženie celého výsledku.
Zahrňte reportéra do konfiguračného súboru XML:
Tu sú výstupy z našich správ:
V porovnaní s predvolenou správou HTML so správnym spustením poskytuje táto správa jasný a jasný obraz o výsledku v jednej tabuľke. Čo je pohodlnejšie a ľahšie čitateľné.
4. Záver
V tomto rýchlom výučbe sme sa dozvedeli, ako generovať protokoly o testoch pomocou doplnku Surefire Maven. Pozreli sme sa tiež na prispôsobenie protokolov a generovanie prispôsobených správ pomocou TestNG. Viac podrobností o TestNG, ako napríklad písanie testovacích prípadov, balíkov atď., Nájdete v našom úvode
Ak sa chcete dozvedieť viac podrobností o TestNG, napríklad o tom, ako písať testovacie prípady, sady, určite začnite našim úvodným článkom.
Implementáciu úryvkov ako vždy nájdete na GitHub.