2017-08-30 4 views
1

J'ai un projet Web Maven pour lequel j'essaie d'exécuter quelques tests d'interface utilisateur Web Spock simples sous Eclipse avec Selenium et Chromedriver. Je peux exécuter chaque classe de test individuellement en cliquant dessus et en sélectionnant "Exécuter en tant que> Test Junit" si j'ajoute ce qui suit aux arguments VM de configuration du fichier:Problème lors du lancement du chromedriver dans le test Spock

-Dwebdriver.chrome.driver =/Users/mht/ChromeDriver /2.3.1/chromedriver

Évidemment, c'est l'emplacement du Chromedriver sur mon système. Ensuite, j'ai essayé de définir un objectif de build Maven au niveau du projet pour lancer les tests. Je clique sur le nom du projet et sélectionne "Run Configurations> Maven Build" et crée une configuration "Verify" pour correspondre à l'objectif de vérification défini dans mon pom. Dans les "Buts, la boîte que j'entre" vérifie "et sur l'étiquette de JRE j'entre également l'emplacement ci-dessus pour le chromedriver dans la boîte d'arguments de VM Quand j'exécute cet objectif, ou sur la ligne de commande" mvn vérifie " l'erreur suivante:

geb.driver.DriverCreationException: Échec de la création pilote de rappel 'script15040527017471153797989 $ _run_closure1 @ 1046d517' à com.google.common.base.Preconditions.checkState (Preconditions.java:754) .. Cela me dit que le test ne peut pas localiser le chromedriver Si je copie le chromedriver dans le répertoire de base du projet, alors le test sera exécuté en utilisant l'objectif verify ou en tapant "mvn verify" sur la ligne de commande Pourquoi ne pas régler le locat chromedriver ion ne travaille pas au niveau de l'objectif maven?

Je ne pense pas que c'est vraiment important, mais la section de construction de mon pom est

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <webXml>src/main/webapp/WEB-INF/web.xml</webXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.18</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <useFile>false</useFile> 
       <includes> 
        <include>**/*Spec.java</include> 
       </includes> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <executions> 
       <execution> 
        <id>tomcat-run</id> 
        <goals> 
         <goal>run-war-only</goal> 
        </goals> 
        <phase>pre-integration-test</phase> 
        <configuration> 
         <port>9081</port> 
         <fork>true</fork> 
        </configuration> 
       </execution> 
       <execution> 
        <id>tomcat-shutdown</id> 
        <goals> 
         <goal>shutdown</goal> 
        </goals> 
        <phase>post-integration-test</phase> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.gmavenplus</groupId> 
      <artifactId>gmavenplus-plugin</artifactId> 
      <version>1.4</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compile</goal> 
         <goal>testCompile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

    </plugins> 
</build> 

Répondre

1

Les arguments de Maven ne sont pas transmis aux configurations infaillibles et par défaut failsafe. Les deux fourchent de nouvelles JVM qui n'obtiennent pas ces arguments. Voir les documents Surefire et Failsafe concernant argLine.

Donc mvn verify -DargLine="-Dwebdriver.chrome.driver=/Users/mht/ChromeDriver/2.3.1/chromedriver" devrait fonctionner pour vous.

Cependant, le meilleur moyen est d'utiliser le WebDriver Extensions Maven Plugin qui peut être utilisé pour télécharger automatiquement le pilote approprié. Vous pouvez ensuite effectuer des scripts simples pour localiser le pilote via votre configuration geb ou coder en dur l'emplacement relatif connu.

Par défaut, le plugin gmaven-plus est obsolète.