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.


$config[zx-auto] not found$config[zx-overlay] not found