Im nächsten Schritt sehen Sie, wie Sie Ihre Daten für Ihren Bericht aufbereiten können. Der Bericht in diesem Tutorial zeigt eine Zusammenfassung aller Testläufe für alle Testfälle einer Testsuite an. Weiterhin zeigt er eine Beschreibung aller ausgeführten Testschritte pro Testlauf, sortiert nach Testfall. In der Klaros API Dokumentation finden Sie eine Übersicht über das zur Verfügung stehende Datenmodell.
Das folgende Bild zeigt wie Sie eine KlarosScript Klasse anlegen.
Zuerst legen Sie eine Klasse an, welche das KlarosScript-Interface implementiert. Dazu klicken Sie mit der rechten Maustaste auf den src Ordner (1) in Ihrem Projekt und wählen New -> Class.
Im folgenden Dialog geben Sie einen Namen für Ihre Script Klasse ein (2)
Klicken Sie dann auf die Schaltfläche KlarosScript
ein, um das Interface KlarosScript für die Klasse festzulegen.
Drücken Sie anschließend auf , um den Dialog zu schließen.
Schließlich klicken Sie auf den
Button (4). Nach kurzer Zeit ist die Klasse angelegt und Eclipse zeigt diese an.Bevor Sie Java Code eingeben können, muss die Klasse noch mit den folgenden Import Statements versorgt werden.
import de.verit.klaros.scripting.*; import de.verit.klaros.core.model.*; import java.util.*;
Der auszuführende Code muss in der Methode execute der Klasse KlarosScript eingetragen werden. Die Testsuite, für die der Report generiert werden soll, wird als Parameter an die Klasse KlarosScript übergeben. Wir werden später in diesem Tutorial sehen, wie dies im Detail funktioniert. Erreicht wird dies durch die folgende Codezeile:
String suiteName = (String)context.getParameterValue("suiteName");
Als nächstes wird auf die Datenbank zugegriffen, um die Daten für den Bericht abzurufen. Das folgende Snippet zeigt, wie der Zugriff auf die Datenbank erfolgt. Dieser Code wählt alle Einträge aus der Tabelle KlarosTestSuite aus, deren ID mit der an KlarosScript übergebenen Test-Suite-ID übereinstimmt und die im aktuell aktiven Projekt vorhanden sind. Das Ergebnis wird als Liste zurückgegeben, wobei wir nur einen einzigen Eintrag zurückerwarten.
// Build the query using the parameter String suiteQuery = "select suite from KlarosTestSuite suite where suite.name='" + suiteName + "'"; if (context.getActiveProject() != null) { suiteQuery += " and suite.configuration.name='"; suiteQuery += context.getActiveProject().getName(); suiteQuery += "'"; } List testSuites = context.executeQuery(suiteQuery);
Um Fehler bei der Ausführung des KlarosScript zu vermeiden, wird folgender Code für den Fall hinzugefügt, dass keine passende Testsuite gefunden wurde.
if (!testSuites.isEmpty()) {
testSuite = testSuites.get(0);
...
}
Jetzt fügen wir die Testsuite dem Context hinzu, damit die Template-Engine später darauf zugreifen kann.
testSuite = testSuites.get(0);
context.add("testSuite", testSuite);
Jetzt werden die Daten für das Tortendiagramm aufbereitet. Der Report soll ein Diagramm anzeigen, welche
die Anzahl der Zustände der Testfall-Ergebnisse widerspiegelt. Es gibt vier mögliche Ergebnistypen:
Passed
, Error
, Failure
und Skipped
.
Hierzu wird eine Liste von KlarosTestCaseResult für jeden möglichen Ergebnistyp angelegt.
Auch dieser Code wird innerhalb der if-Anweisung angelegt.
List<KlarosTestCaseResult> error = new ArrayList<>(); List<KlarosTestCaseResult> failure = new ArrayList<>(); List<KlarosTestCaseResult> success = new ArrayList<>(); List<KlarosTestCaseResult> skipped = new ArrayList<>();
Nun werden die Listen gefüllt. Zuerst wird über die Liste der Ergebnisse der Testsuite iteriert.
for (KlarosTestSuiteResult testSuiteResult : testSuite.getResults()) { ... }
Innerhalb der Testsuite-Ergebnis-Schleife wird über die Testergebnisse jedes Testfalls iteriert. Der folgende Code wird dazu in die im vorhergehenden Schritt angelegte for-Schleife eingefügt.
for (KlarosTestCaseResult testCaseResult : testSuiteResult.getResults()) { ... }
Nun haben Sie die Testergebnisse vorliegen und können sie abhängig vom Ergebnis auf die vier Listen verteilen. Der folgende Code wird in die im vorhergehenden Schritt erstellte for-Schleife eingefügt.
if (testCaseResult.isError()) error.add(testResult); else if (testCaseResult.isFailure()) failure.add(testResult); else if (testCaseResult.isPassed()) success.add(testResult); else if (testCaseResult.isSkipped()) skipped.add(testResult);
Wir sind fast fertig. Im letzten Schritt müssen wir die vier Listen, welche die KlarosTestCaseResults beinhalten, noch im Context ablegen, damit die Template-Engine darauf zugreifen kann. Der folgende Code wird innerhalb der if-Anweisung, jedoch außerhalb der zwei for-Schleifen eingefügt.
context.add("error", error); context.add("failure", failure); context.add("success", success); context.add("skipped", skipped);
Die vollständige Klasse finden Sie in folgendem Archiv.