3 votes

Comment exécuter des tests selenium avec maven ?

Je veux exécuter le test de selenium avec maven comme partie de la construction, donc voici ma configuration :

    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-war-plugin</artifactId>
       <version>2.1.1</version>
    </plugin>

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
    </plugin>

    <plugin>

        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.1.4</version>
        <configuration>

            <wait>false</wait> 
            <container>
             <containerId>tomcat7x</containerId>
             <home>${env.CATALINA_HOME}</home>  
             <timeout>300000</timeout> <!-- 5 minutes -->                   
            </container>

            <configuration>
             <type>standalone</type>
             <home>target/tomcat7x</home>  
            </configuration>

            <properties>
              <cargo.jvmargs>-XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled</cargo.jvmargs>
            </properties>

        </configuration>
            <executions>
                <execution>
                <id>start-container</id>
                <phase>pre-integration-test</phase>
                    <goals>
                        <goal>start</goal>
                        <goal>deploy</goal>
                    </goals>
                </execution>
                <execution>
                <id>stop-container</id>
                <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
    </plugin> 

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>selenium-maven-plugin</artifactId>
          <executions>
                <execution>
                <id>start</id>
                <phase>pre-integration-test</phase>
                    <goals>
                        <goal>start-server</goal>
                    </goals>
                <configuration>
                    <background>true</background>
                    <logOutput>true</logOutput>
                </configuration>
            </execution>

            <execution>
            <id>stop</id>
            <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop-server</goal>
                    </goals>
            </execution> 
        </executions>
  </plugin>

    <plugin>

            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8</version>

            <configuration>
                <junitArtifactName>
                org.junit:com.springsource.org.junit
                </junitArtifactName>
                <excludes>

                    <exclude>**/unit/*Test.java</exclude>
                </excludes>
            </configuration>

            <executions>
                <execution>

                <id>integration-tests</id>
                <phase>integration-test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                <configuration>
                <skip>false</skip>
                <excludes>
                    <exclude>none</exclude>
                </excludes>

                <includes>
                   <include>**/integration/*Test.java</include>
                </includes>
                </configuration>
                </execution>
        </executions>

        </plugin>

ce qui se passe est le suivant :

  1. war est créé.
  2. La classe de test d'intégration s'exécute (ouverture du navigateur, puis fermeture du navigateur).
  3. Le serveur Tomcat démarre et déploie l'application.
  4. PROBLÈME : Après le déploiement, j'obtiens java.lang.OutOfMemoryError : Espace PermGen bien que j'aie augmenté la mémoire dans catalina.bat et dans la configuration de cargo, je peux voir que la guerre est déployée dans le dossier de sortie de cargo, donc je me demande pourquoi j'obtiens cette exception ?

UPDATE : LOGS

[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.catalina.startup.SetAllPropertiesRule begin
[WARNING] [talledLocalContainer] WARNING: [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'emptySessionPath' to 'true' did not find a matching property.
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
[WARNING] [talledLocalContainer] WARNING: [SetPropertiesRule]{Server/Service/Engine/Host} Setting property 'xmlValidation' to 'false' did not find a matching property.
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
[WARNING] [talledLocalContainer] WARNING: [SetPropertiesRule]{Server/Service/Engine/Host} Setting property 'xmlNamespaceAware' to 'false' did not find a matching property
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.coyote.AbstractProtocol init
[WARNING] [talledLocalContainer] INFO: Initializing ProtocolHandler ["http-bio-8080"]
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.coyote.AbstractProtocol init
[WARNING] [talledLocalContainer] INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.catalina.startup.Catalina load
[WARNING] [talledLocalContainer] INFO: Initialization processed in 600 ms
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.catalina.core.StandardService startInternal
[WARNING] [talledLocalContainer] INFO: Starting service Catalina
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.catalina.core.StandardEngine startInternal
[WARNING] [talledLocalContainer] INFO: Starting Servlet Engine: Apache Tomcat/7.0.22
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:51 PM org.apache.catalina.startup.HostConfig deployWAR
[WARNING] [talledLocalContainer] INFO: Deploying web application archive cargocpc.war
[WARNING] [talledLocalContainer] Jan 16, 2012 1:36:52 PM org.apache.catalina.startup.HostConfig deployWAR
[WARNING] [talledLocalContainer] INFO: Deploying web application archive MyAPP.war
[WARNING] [talledLocalContainer] java.lang.OutOfMemoryError: PermGen space
[WARNING] [talledLocalContainer] Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
[WARNING] [talledLocalContainer]        at java.lang.Throwable.getStackTraceElement(Native Method)
[WARNING] [talledLocalContainer]        at java.lang.Throwable.getOurStackTrace(Throwable.java:591)
[WARNING] [talledLocalContainer]        at java.lang.Throwable.printStackTrace(Throwable.java:462)
[WARNING] [talledLocalContainer]        at java.lang.Throwable.printStackTrace(Throwable.java:451)
[WARNING] [talledLocalContainer]        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:469)

4voto

fresh_dev Points 1427
  • J'utilise maintenant le profil suivant et cela fonctionne bien, je lance le test d'intégration avec

     mvn install -Pit

Profil :

<profile>
          <id>it</id>
          <build>
           <plugins>

           <plugin>

            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.1.4</version>
            <configuration>

                <wait>false</wait> 
                <container>
                 <containerId>tomcat7x</containerId>
                 <home>${env.CATALINA_HOME}</home>  
                 <timeout>300000</timeout>                  
                </container>

                <configuration>
                 <type>standalone</type>
                 <home>target/tomcat7x</home> 
                 <properties>
                  <cargo.jvmargs>-XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled</cargo.jvmargs>
                </properties> 
                </configuration>

            </configuration>
                <executions>
                    <execution>
                    <id>start-container</id>
                    <phase>pre-integration-test</phase>
                        <goals>
                            <goal>start</goal>
                            <goal>deploy</goal>
                        </goals>

                        <configuration>
                            <deployer>
                                <deployables>
                                    <deployable>
                                    <groupId>${project.groupId}</groupId>
                                    <artifactId>${project.artifactId}</artifactId>
                                    <type>war</type>
                                    <pingURL>http://localhost:8080/${project.artifactId}</pingURL>
                                    <pingTimeout>60000</pingTimeout>
                                    <properties>
                                        <context>${project.artifactId}</context>
                                    </properties>
                                    </deployable>
                                </deployables>
                            </deployer>
                        </configuration>

                    </execution>
                    <execution>
                    <id>stop-container</id>
                    <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
          </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>selenium-maven-plugin</artifactId>
              <executions>
                    <execution>
                    <id>start</id>
                    <phase>pre-integration-test</phase>
                        <goals>
                            <goal>start-server</goal>
                        </goals>
                    <configuration>
                        <background>true</background>
                        <logOutput>true</logOutput>
                    </configuration>
                </execution>

                <execution>
                <id>stop</id>
                <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop-server</goal>
                        </goals>
                </execution> 
            </executions>
    </plugin>

             <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <executions>

                        <execution>
                            <id>default-test</id>                                
                            <configuration>
                                <skipTests>true</skipTests>
                            </configuration>
                        </execution>

                        <execution>
                            <id>surefire-it</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <includes>
                                    <include>**/integration/*Test.java</include>
                                </includes>
                                <skipTests>false</skipTests>
                            </configuration>
                        </execution>
                    </executions>
                    <configuration>
                        <argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine>
                    </configuration>
                </plugin>

              </plugins>
            </build>

            <activation>
              <property>
                <name>it</name>
              </property>
            </activation>

        </profile>

1voto

artbristol Points 17755

Essayez de régler MAVEN_OPTS=-XX:MaxPermSize=384m (ou un nombre approprié) dans les variables d'environnement de l'endroit où vous exécutez la compilation maven.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X