Wie bereits in den vorherigen Kapiteln erwähnt, lassen sich dem
checkerberry-atdd-maven-plugin
eigene Parser
hinzufügen. Voraussetzung dafür ist, dass der Parser das Interface
de.conceptpeople.checkerberry.atdd.common.io.UserStoryParser
aus der Library checkerberry-atdd-common.jar
implementiert. In dem folgenden Codebeispiel ist das vollständige
Interface dargestellt.
Beispiel 4.12. UserStoryParser-Interface
public interface UserStoryParser { /** * Liest User Stories ein. * * @param properties * eine Map mit Parsereinstellungen * @return eine Liste von <code>UserStory</code>-Objekten. Werden keine * User Stories gefunden, wird eine leere Liste zurückgegeben. * @throws UserStoryParseException * verursacht durch einen Parserfehler */ List<UserStory> parse(Map<String, String> properties) throws UserStoryParseException; }
Das Interface definiert die Methode parse(Map<String,
String> properties)
mit einer Liste von
UserStory
-Objekten als Rückgabewert. Über den
Parameter properties
werden dem Parser alle in der
pom definierten Properties übergeben.
Da damit gerechnet werden muss, dass ein Parser falsch oder nur
unvollständig konfiguriert sein kann, sollten für die notwendigen
Properties Standardwerte gesetzt werden bzw. eine entsprechende
Fehlerbehandlung vorhanden sein. Dabei sollten alle Exceptions innerhalb
der parse
-Methode gefangen oder durch die
UserStoryParseException
gekapselt werden.
Beim Parsen der User Stories ist zu vermeiden, dass Stories
doppelt eingelesen werden. Dies könnte zu einer falschen Auswertung des
Projektfortschritts führen. Da bei der Verwendung des
checkerberry-atdd-maven-plugin
mehrere Parser zum
Einsatz kommen können, ist außerdem darauf zu achten, dass die Parser
disjunkte Mengen von User Stories einlesen. Im Falle eines File-Parser
muss daher der zugehörige File-Filter so angepasst sein, dass nur die
betreffenden User Stories eingelesen werden.
Sind für einen angegebenen Parser keine User Stories vorhanden,
ist gefordert, dass dieser eine leere Liste von
UserStory
-Objekten zurückliefert.
Bei dem UserStory
-Objekt handelt es sich um ein
einfaches POJO, dessen Konstruktor fünf Parameter erwartet. Die ersten
vier Parameter enthalten notwendige Informationen und dürfen daher nicht
NULL
sein.
Beispiel 4.13. Konstruktor der UserStory-Klasse
/** * * Erzeugt eine neue UserStory Instanz. * * @param id * Identifikator der User Story * @param name * Name der User Story * @param sprint * Der Sprint in dem die User Story umgesetzt werden soll * @param priority * Priorität der User Story * @param acceptanceTests * Die Schlüsselwerte der Map entsprechen den Schlüsselwerten der * identifizierten Akzeptanztests. Der Wert in der Map entspricht * der Akzeptanztest-Beschreibung. Da die Beschreibung optional ist, * kann der Wert NULL oder leer sein. */ public UserStory(String id, String name, String sprint, String priority, Map<String, String> acceptanceTests) { ... }