Egyéni jelentés a TestNG-vel

1. Áttekintés

Ebben a cikkben az egyéni naplózás és jelentések TestNG használatával történő létrehozását tárgyaljuk.

A TestNG biztosítja a saját jelentéskészítési funkcióját - jelentéseket állít elő HTML / XML formátumban. Ha a teszteket a maven-surefire-plugin, a jelentés a beépülő modul által meghatározott alapértelmezett formát ölti. A beépített jelentések mellett mechanizmust biztosít a naplózott információk és a létrehozott jelentések egyszerű testreszabásához.

Ha a TestNG alapjaival szeretne kezdeni, nézze meg ezt a cikket.

2. Egyéni naplózás

Az egyéni naplózás végrehajtása előtt vizsgáljuk meg az alapértelmezett naplókat végrehajtással mvn teszt parancs:

Futtatott tesztek: 11, hibák: 1, hibák: 0, kihagyott: 0, eltelt idő: 1,21 mp <<< HIBA! - a TestSuite-ben mikorCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Eltelt idő: 0,01 mp java.lang.AssertionError: A teszt valamilyen okból kudarcot vallott a baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) találatában: Eredmények: Sikertelen tesztek: RegistrationTest.whenCalledFromSuite_thanOK: 15 Teszt valamilyen okból sikertelen Tesztek futottak: 11, hibák: 1, hibák: 0, kihagyva: 0 [HIBA] Vannak teszthibák.

Ezek a naplók nem adnak információt a végrehajtás sorrendjéről, illetve arról, hogy egy adott teszt mikor kezdődött / fejeződött be stb.

Ha meg akarjuk tudni az egyes futtatások eredményét, néhány egyedi adattal együtt, akkor saját naplóinkat és jelentéseinket is megvalósíthatjuk. A TestNG lehetőséget nyújt az egyéni jelentések és naplózás megvalósítására.

Egyszerűen fogalmazva, vagy megvalósíthatjuk a org.testng.ITestListener felület a naplózáshoz vagy a org.testng.IReporter interfész a jelentésekhez. Ezek a megvalósított osztályok értesítést kapnak olyan eseményekről, mint a tesztek és a csomagok kezdete, vége, meghibásodása stb.

Folytassuk és hajtsunk végre néhány egyszerű egyéni naplózást:

public class A CustomisedListener megvalósítja az ITestListener {// ... @Orride public void onFinish (ITestContext testContext) {LOGGER.info ("ELVÉGZETT TESZT ESETEK"); testContext.getPassedTests (). getAllResults () .forEach (eredmény -> {LOGGER.info (eredmény.getName ());}); LOGGER.info ("SIKER TESZT ESETEK"); testContext.getFailedTests (). getAllResults () .forEach (eredmény -> {LOGGER.info (eredmény.getName ());}); LOGGER.info ("A teszt befejezése:" + testContext.getEndDate (). ToString ()); } // ...} 

Figyeljük meg, hogy felülírtuk a onFinish () metódus, amelyet akkor hívunk meg, amikor az összes tesztfuttatás befejeződik és az összes konfiguráció elkészül. Hasonlóképpen felülírhatunk más módszereket is - például onTestStart (), onTestFailure () stb (és itt talál további részleteket ezekről a más módszerekről).

Vegyük fel ezt a hallgatót az XML konfigurációba:

A végrehajtás után a hallgatót minden esemény meghívja, és naplózza az információkat, amint végrehajtottuk. Ez hasznos lehet a tesztfuttatás hibakereséséhez.

A kimeneti naplók:

... INFO CUSTOM_LOGS - lépések vizsgálat: Szo április 22 14:39:43 IST 2017 INFO CUSTOM_LOGS - Tesztelés: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - tesztelve: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Idő időpontja: 6 ms INFO CUSTOM_LOGS - Tesztelés: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Sikertelen: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - PASSED Tesztsorozat INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - sikertelen teszt ESETBEN INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - teszt kitölteni: Szo április 22 14:39:43 IST 2017 ...

Az egyéni naplók hiányzó információkat szolgáltatnak az alapértelmezett naplókból.

3. Egyéni jelentések

Amikor a plugin segítségével teszteket futtatunk, az HTML / XML formátumú jelentéseket készít target / surefire-jelentések Könyvtár:

Ha egy bizonyos tesztcsomagot egy TestNG XML fájl segítségével akarunk futtatni, akkor fel kell tüntetnünk a surefire-pluginben konfiguráció címke:

   src \ test \ resources \ parametrized_testng.xml 

Az egyéni naplózás után most próbáljunk meg létrehozni néhány egyéni jelentést, ahol a org.testng.IReporter felületet, és felülírja a jelentést készít() módszer:

public void generatorReport (List xmlSuites, List suite, String outputDirectory) {String reportTemplate = initReportTemplate (); Karaktersorozat = suites .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); Karakterlánc-jelentés = reportTemplate.replaceFirst ("", String.format ("% s", body)); saveReportTemplate (outputDirectory, jelentés);}

Az felülbírált módszer három érvet tartalmaz:

  • xmlSuite - tartalmazza az XML fájlban említett összes csomag listáját
  • lakosztályok - egy listaobjektum, amely tartalmazza a teszt végrehajtásával kapcsolatos összes információt
  • kimeneti könyvtár - a könyvtár elérési útja, ahol a jelentések készülnek

Használtuk a initReportTemplate () módszer a HTML-sablon betöltésére, suiteToResults () függvény, amely meghívja a resultsToRow () függvény a jelentés generálásának belső terének kezelésére:

privát funkció suiteToResults () {return suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } privát funkció resultsToRows (ISuite csomag) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Set failTests = testContext.getFailedTests (). GetAllResults (); Set passTests = testContext.getPassedTests (). GetAllResults (); Set skippedTests = testContext.getSkippedTests (). GetAllResults (); String suiteName = suite.getName (); return Stream .of (FailTests, PassTests, skippedTests) .flatMap (results -> generatorReportRows (e.getKey (), suiteName, results) .stream ()); }; }

és saveReportTemplate () a teljes eredmény elmentése érdekében.

Vegye fel a riportert az XML konfigurációs fájlba:

Íme a jelentéseink eredménye:

Az alapértelmezett HTML-jelentéshez képest ez a jelentés világos és éles képet ad az eredményről, egyetlen táblázatban. Ami kényelmesebb és könnyebben olvasható.

4. Következtetés

Ebben a gyors bemutatóban megtudtuk, hogyan lehet tesztjelentéseket készíteni a Surefire Maven beépülő modullal. Megvizsgáltuk a naplók testreszabását és testreszabott jelentések létrehozását is a TestNG segítségével. A TestNG-vel kapcsolatos további részletek, például a tesztesetek, csomagok stb. Megírása, a bevezetőnkben találhatók

A TestNG-vel kapcsolatos további részletek, például a tesztesetek, csomagok megírásának leírása mindenképpen a bevezető cikkünkkel kezdődik.

Mint mindig, a kivonatok megvalósítása megtalálható a GitHubon.