Pour faire suite à l’article précédent sur la configuration spring, voici le même type de configuration pour Selenium (outil de test d’intégration pilotant un navigateur).
On va pouvoir lancer les tests avec seulement 3 classes et 0 xml.
1 – on définit une classe de configuration qui va contenir l’url de base du site et le driver du navigateur à tester:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Configuration public class TestConfig { @Bean public URI getSiteBase() throws URISyntaxException { return new URI("http://localhost:10001/demo-spring-1.0-SNAPSHOT"); } @Bean(destroyMethod = "quit") public FirefoxDriver getDrv() { return new FirefoxDriver(); } } |
2 – on définit ensuite une classe abstraite qui va référencer la configuration et va contenir un petit « tips » pour ne pas avoir plusieurs processus de firefox en même temps, lorsque qu’on lance plusieurs tests
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes={ TestConfig.class }) public abstract class AbstractTestIT { @Autowired protected URI siteBase; @Autowired protected WebDriver drv; { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { drv.close(); } }); } } |
3- et enfin la classe de test qui vérifie que le code du controller est correcte:
1 2 3 4 5 6 7 8 9 |
public class HelloControllerTestIT extends AbstractTestIT { @Test public void testHello() { drv.get(siteBase.toString()+"/hello"); assertTrue(drv.getPageSource().contains("Welcome anonymous")); } } |
4- pour que tout s’enchaîne correctement, il faut modifier le pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.12</version> <executions> <execution> <id>default</id> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.2.0</version> <configuration> <type>standalone</type> <configuration> <properties> <cargo.servlet.port>10001</cargo.servlet.port> </properties> </configuration> </configuration> <executions> <execution> <id>start</id> <phase>pre-integration-test</phase> <goals> <goal>start</goal> </goals> </execution> <execution> <id>stop</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> </plugin> </plugins> </build> |
et ajouter les dépendances suivantes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-firefox-driver</artifactId> <version>2.43.1</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> |
Attention: La version de selenium est fortement lié à la version de firefox. Si l’exemple ne marche pas, il faut vérifier qu’une nouvelle version n’est pas disponible.
Le lancement de la commande
1 |
mvn verify |
devrait donner un résultat du type:
1 2 3 |
Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 |
Les sources sont ici: github
références: