Easyb, Behavior Driven Development
Pour rappel, le concept de Behavior Driven Development propose de se focaliser sur le comportement attendu de l’application plutôt que sur les tests. Ces comportements peuvent être décrits soit sous la forme de spécifications, soit sous la forme d’histoires !
Installation d’Easyb
Easyb est un outil permettant d’implémenter le BDD dans un projet Java, bien que le code à écrire pour rédiger vos spécifications sera du Groovy, dont la syntaxe est plus légère (plus agile) que Java. Il est comparable à l’outil specs en Scala ou encore RSpec en Ruby.
Pour l’intégrer à votre projet, vous disposez de multiples possibilités : ligne de commande, Ant, Maven ou encore l’intégration avec les IDE IntelliJ et Eclipse.
Il m’a été impossible d’installer le plugin Eclipse, l’adresse du plugin donnée sur le site officiel n’ayant plus l’air d’exister ! Je me suis donc penché sur la solution Maven. Créons donc le projet :
mvn archetype:create -DgroupId=fr.chosesafaire -DartifactId=easyb -Dpackagename=fr.chosesafaire
Editons le fichier de projet pom.xml pour y inclure Easyb, qui sera appelée lors de la phase test :
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modelVersion>4.0.0</modelVersion>
<groupId>fr.chosesafaire</groupId>
<artifactId>easyb</artifactId>
<packaging>jar</packaging>
<name>easyb</name>
<version>0.0.1</version>
<description>Test de Easyb</description>
<url>http://www.chosesafaire.fr</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.easyb</groupId>
<artifactId>maven-easyb-plugin</artifactId>
<version>0.9.6</version>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Nous développerons dans cet exemple une classe HelloMachine, qui n’a pour but que de renvoyer « Hello » et de stocker le fait d’avoir été appelée. Voici le scenario, à placer le fichier src/test/easby/HelloMachineStory.groovy, répertoire qui peut être facilement paramétré depuis le fichier Maven :
import fr.chosesafaire.HelloMachine
/**
* Calling the HelloMachine !
*/
scenario "calling the hellomachine", {
given "an hellomachine", {
machine = new HelloMachine()
hello = "Hello"
}
when "sayHello is called", {
sayHello = machine.sayHello()
}
then "hello should be returned", {
sayHello.shouldBe hello
}
and "then the machine should have been called", {
machine.isCalled().shouldBe true
}
}
Et enfin notre classe métier :
package fr.chosesafaire;
public class HelloMachine {
private Boolean called = Boolean.FALSE;
public String sayHello() {
called = Boolean.TRUE;
return "Hello";
}
public Boolean isCalled() {
return called;
}
}
Il ne reste qu’à lancer la compilation et les tests :
mvn compile test
Si vous n’avez pas Groovy d’installé, Maven le fera pour vous, car c’est une dépendance d’Easyb. Le résultat dans la console devrait être le suivant (bien qu’il soit possible de générer des rapports HTML !) :
[java] Running hello machine story (HelloMachineStory.groovy) [java] Scenarios run: 1, Failures: 0, Pending: 0, Time Elapsed: 0.313 sec [java] 1 behavior run with no failures
Ceci n’est qu’une brève introduction, j’espère que vous comprendrez l’intérêt d’un tel outil en étudiant plus en détail les fonctionnalités ! Voici une liste de liens utiles :
Mots clés : agile, bdd, Développement, groovy, java, tdd, tests
Articles liés :