Aangepaste rapportage met TestNG

1. Overzicht

In dit artikel bespreken we het genereren van aangepaste logboekregistratie en rapporten met TestNG.

TestNG biedt zijn eigen rapportagefunctie - rapporten genereren in HTML / XML-indelingen. Als tests worden uitgevoerd met de maven-surefire-plugin, het rapport zal de standaardvorm aannemen die is gedefinieerd door de plug-in. Afgezien van ingebouwde rapportage, biedt het een mechanisme voor eenvoudige aanpassing van geregistreerde informatie en gegenereerde rapporten.

Lees dit artikel als je wilt beginnen met de basisprincipes van TestNG.

2. Aangepaste logboekregistratie

Voordat we aangepaste logboekregistratie implementeren, laten we de standaardlogboeken bekijken door uit te voeren mvn-test opdracht:

Tests uitgevoerd: 11, fouten: 1, fouten: 0, overgeslagen: 0, verstreken tijd: 1,21 sec <<< FAILURE! - in TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Verstreken tijd: 0,01 sec <<< FAILURE! java.lang.AssertionError: Test mislukt om een ​​of andere reden op baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) Resultaten: Mislukte tests: RegistrationTest.whenCalledFromSuite_thanOK: 15 Test mislukt om een ​​of andere reden Tests worden uitgevoerd: 11, mislukt: 1, Fouten: 0, Overgeslagen: 0 [FOUT] Er zijn testfouten.

Deze logboeken geven ons geen informatie over de volgorde van uitvoering, of over wanneer een bepaalde test is gestart / voltooid enz.

Als we het resultaat van elke run willen weten, samen met enkele aangepaste gegevens, kunnen we onze eigen logboeken en rapporten implementeren. TestNG biedt een manier om aangepaste rapporten en logboekregistratie te implementeren.

Simpel gezegd, we kunnen ofwel het org.testng.ITestListener interface voor logboekregistratie of de org.testng.IReporter interface voor rapportage. Deze geïmplementeerde klassen worden op de hoogte gebracht voor gebeurtenissen zoals start, einde, mislukking enz. Van tests en suites.

Laten we doorgaan en enkele eenvoudige aangepaste logboekregistratie implementeren:

openbare klasse CustomisedListener implementeert ITestListener {// ... @Override public void onFinish (ITestContext testContext) {LOGGER.info ("PASSED TEST CASES"); testContext.getPassedTests (). getAllResults () .forEach (resultaat -> {LOGGER.info (result.getName ());}); LOGGER.info ("MISLUKTE TESTCASES"); testContext.getFailedTests (). getAllResults () .forEach (resultaat -> {LOGGER.info (result.getName ());}); LOGGER.info ("Test voltooid op:" + testContext.getEndDate (). ToString ()); } // ...} 

Merk op hoe we het onFinish () methode, die wordt aangeroepen wanneer alle testuitvoeringen zijn voltooid en alle configuraties zijn voltooid. Evenzo kunnen we andere methoden negeren, zoals onTestStart (), onTestFailure () etc (en vind hier details over deze andere methoden).

Laten we nu deze luisteraar opnemen in de XML-configuratie:

Eenmaal uitgevoerd, wordt de luisteraar bij elke gebeurtenis opgeroepen en wordt de informatie geregistreerd zoals we hebben geïmplementeerd. Dit kan handig zijn voor het debuggen van onze testuitvoering.

De output logt:

... INFO CUSTOM_LOGS - begonnen met het testen op: zaterdag 22 april 14:39:43 IST 2017 INFO CUSTOM_LOGS - Testing: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Getest: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Benodigde tijd: 6 ms INFO CUSTOM_LOGS - Testing: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - mislukt: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - GESLAAGDE TEST CASES INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - MISLUKTE TEST CASES INFO CUSTOM_LOGS - gegevenNumberObjectVanafDataProvider_ifEvenCheck op: IOSSnl.

De aangepaste logboeken geven ons ontbrekende informatie in de standaardlogboeken.

3. Aangepaste rapporten

Wanneer we tests uitvoeren met behulp van de plug-in, genereert deze rapporten in HTML / XML-indelingen in target / trefzekere-rapporten directory:

Als we een bepaalde testsuite willen uitvoeren met behulp van een TestNG XML-bestand, moeten we deze in de trefzekere plug-in vermelden configuratie label:

   src \ test \ resources \ parametrized_testng.xml 

Laten we na aangepaste logboekregistratie nu proberen enkele aangepaste rapporten te maken waarin we het org.testng.IReporter interface en overschrijf de genererenReport () methode:

public void generationReport (List xmlSuites, List suites, String outputDirectory) {String reportTemplate = initReportTemplate (); String body = suites .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); String report = reportTemplate.replaceFirst ("", String.format ("% s", body)); saveReportTemplate (outputDirectory, rapport);}

De overschreven methode heeft drie argumenten:

  • xmlSuite - bevat een lijst van alle suites die in het XML-bestand worden genoemd
  • suites - een lijstobject met alle informatie over de testuitvoering
  • outputDirectory - het mappad waar rapporten worden gegenereerd

We gebruikten de initReportTemplate () methode om een ​​HTML-sjabloon te laden, suiteToResults () functie die de resultsToRow () functie om de interne aspecten van het genereren van het rapport af te handelen:

privé-functie suiteToResults () {retour suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } private functie resultsToRows (ISuite suite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Stel failedTests = testContext.getFailedTests (). GetAllResults (); Stel doorgegevenTests = testContext.getPassedTests (). GetAllResults (); Stel skippedTests = testContext.getSkippedTests (). GetAllResults (); String suiteName = suite.getName (); return Stream .of (failedTests, doorgegevenTests, skippedTests) .flatMap (results -> GenereerReportRows (e.getKey (), suiteName, resultaten) .stream ()); }; }

en saveReportTemplate () om het volledige resultaat op te slaan.

Neem de melder op in het XML-configuratiebestand:

Dit is de output van onze rapporten:

In vergelijking met het standaard veilige HTML-rapport, geeft dit rapport een duidelijk en scherp beeld van het resultaat, in één tabel. Dat is handiger en gemakkelijker te lezen.

4. Conclusie

In deze korte tutorial hebben we geleerd hoe we testrapporten kunnen genereren met de Surefire Maven-plug-in. We hebben ook gekeken naar het aanpassen van de logboeken en het genereren van aangepaste rapporten met TestNG. Voor meer details over TestNG, zoals het schrijven van testcases, suites, etc. verwijzen we naar onze inleiding

Voor meer informatie over TestNG, zoals het schrijven van testcases en suites, begint u zeker met ons inleidende artikel.

Zoals altijd is de implementatie van de fragmenten te vinden op GitHub.


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