4.3. Konfiguration

Im nachfolgenden werden die notwendigen Konfigurationsschritte erläutert, um die Auswertung der User Stories und die Darstellung der Ergebnisse im Hudson oder als eigenständigen HTML-Report darzustellen.

4.3.1. Maven-Plugin

Das checkerberry-atdd-maven-plugin wird benötigt, um die User Stories einzulesen und die darin enthaltenen Akzeptanzkriterien (definiert durch eine Menge von Akzeptanztests) mit den Surefire-Ergebnissen zu vergleichen. Die Resultate der Auswertung schreibt das Maven-Plugin in die XML-Datei acceptancetest.xml. Auf Basis dieser Datei werden die aufbereiteten Ergebnisse durch checkerberry business view in den Build integriert und dargestellt.

4.3.1.1. Plugin Beschreibung

Um eine Auswertung der User Stories vorzunehmen, ist es erforderlich, das checkerberry-atdd-maven-plugin mit dem Maven-Goal analyze-tests aufzurufen. Der vollständige Name des Maven-Goals lautet de.conceptpeople.checkerberry:checkerberry-atdd-maven-plugin:3.2.x:analyze-tests. Das Plugin verwendet einen separaten Parser, um die Informationen einer User Story auszulesen. Der mitgelieferte Standard-Parser liest die Informationen aus einer Textdatei im Dateisystem (siehe Abschnitt 4.4.2, „Verwendung des Standard-Parsers“). Im Abschnitt 4.4.1, „Verwendung des Jira-UserStory-Retrievers“ wird beschrieben, wie die User Story-Informationen aus Atlassian Jira ausgelesen werden können. Darüber hinaus ist es auch möglich, eigene Parser zu definieren, die unterschiedliche Formate unterstützen oder die die User Story-Informationen aus anderen Quellen wie z.B. einer Datenbank lesen. Nähere Information dazu finden sich in Abschnitt 4.4.3, „Eigene User Story-Parser schreiben“.

In der Konfiguration des Plugins ist die Angabe von mindestens einem Parser Pflicht. Die Angabe der Parser erfolgt über das <parsers>-Tag, welches wiederum ein oder mehrere <parser>-Tags enthält (siehe Abschnitt 4.3.1.2, „Beispielkonfiguration“).

Damit die Status der Akzeptanztests zu den eingelesenen User Stories auswertbar sind, müssen die Surefire-Ergebnisse richtig eingelesen werden. Sind die Surefire-Reports wie üblich unter target/surefire-reports abgelegt, ist keine zusätzliche Konfiguration notwendig. Befinden sich die Surefire-Ergebnisse in einem abweichenden Ordner oder sind über mehrere Ordner verteilt, kann über den optionalen Parameter <reportDirectories> abweichende Pfade gesetzt werden. Um sicherzustellen, dass die Surefire-Ergebnisse beim Auswerten der User Stories bereits vorliegen, wird das Goal analyze-tests des Plugins standardmäßig in der Maven-Lebenszyklusphase post-integration-test ausgeführt.

Das Encoding der Ausgabedatei acceptancetest.xml kann über den Parameter <encoding> gesetzt werden. Darüber hinaus kann über den Parameter <outputDirectory> bestimmt werden, wohin die Ausgabedatei geschrieben wird. In den beiden nachfolgenden Tabellen sind die notwendigen und die optionalen Parameter zusammengefasst.

Benötigte Parameter
NameTypeDescription
parsersParser[]Ein oder mehrere Parser, die dazu verwendet werden, die User Stories einzulesen.
Optionale Parameter
NameTypeDescription
encodingStringSetzt das Encoding, welches beim Schreiben der Ausgabedatei verwendet wird.
Default value is:
UTF-8
outputDirectoryFilePfad zu dem Ausgabeordner für die acceptancetest.xml.
Default value is:
target
reportDirectoriesFile[]Pfade zu den reports Ordnern.
Default value is:
target/surefire-reports

4.3.1.2. Beispielkonfiguration

Nachfolgend sind einige Konfigurationsbeispiele aufgeführt.

Neben den üblichen Angaben wie groupId, artifactId, version und executions, existieren mit dependencies und configuration zwei wichtige Konfigurationsabschnitte in dem checkerberry-atdd-maven-plugin. Wie eingangs erwähnt, lassen sich dem Plugin unterschiedliche Parser hinzufügen, die das Interface UserStoryParser implementieren. Um dem Plugin einen Parser bekannt zu machen, muss dieser als dependency eingetragen werden. Erst dann ist es möglich, den Parser über die configuration zu verwenden. In dem unteren Beispiel wird das checkerberry-atdd-userstory-fileparser.jar in der Version 3.2.x eingebunden. Dieses enthält die Parser-Klasse de.conceptpeople.checkerberry.atdd.parser.UserStoryFileParser, welche in der Konfiguration als Parser ausgewählt wird. Über properties können Einstellungen an den Parser übergeben werden, die dann beim Parsen zur Verfügung stehen.

Beispiel 4.1. Beispielkonfiguration des Maven-Plugins

<plugins>
  <plugin>
    <groupId>de.conceptpeople.checkerberry</groupId>
    <artifactId>checkerberry-atdd-maven-plugin</artifactId>
    <version>3.2.x</version>
    <executions>
     <execution>
      <id>analyze-tests</id>
      <goals>
       <goal>analyze-tests</goal>
      </goals>
     </execution>
    </executions>
    <dependencies>
     <dependency>
      <groupId>de.conceptpeople.checkerberry</groupId>
      <artifactId>checkerberry-atdd-userstory-fileparser</artifactId>
      <version>3.2.x</version>
     </dependency>
    </dependencies>
    <configuration>
     <parsers>
      <parser>
       <parserClass>
         de.conceptpeople.checkerberry.atdd.parser.UserStoryFileParser
       </parserClass>
       <properties>
         <userStoryDirectory>src/test/resources/stories</userStoryDirectory>
       </properties>
      </parser>
     </parsers>
    </configuration>
  </plugin>
</plugins>


Die Angaben zu einem Parser bestehen aus zwei Teilen. Mit der parserClass muss auf eine gültige Klasse verwiesen werden, die das Interface UserStoryParser implementiert. Die Angabe der properties ist optional. Ob und welche zusätzlichen Informationen ein Parser benötigt, um die User Stories erfolgreich einzulesen, hängt vom jeweiligen Parser ab. Daher ist insbesondere bei der Implementierung eigener Parser darauf zu achten, dass notwendigen Properties für den Benutzer transparent sind.

Sollen unterschiedliche Typen von User Stories eingelesen werden, lassen sich innerhalb von configuration mehrere Parser angeben. Die Parser werden während der Ausführung des Plugins in der angegebenen Reihenfolge aufgerufen. Es ist darauf zu achten, dass jeder verwendete Parser in den dependencies des Plugins bekannt gemacht wurde. Das Beispiel zeigt schematisch das Einbinden von mehreren Parsern.

Beispiel 4.2. Einbinden mehrerer User Story Parser

...
  <parsers>
    <parser>
      <parserClass>...</parserClass>
      <properties>...</properties>
    </parser>
    <parser>
      <parserClass>...</parserClass>
      <properties>...</properties>
    </parser>
  
      ...

  </parsers>
...