2012-07-03 5 views
0

J'utilise maven pour faire mes tests de sélénium mais il ne trouve pas ces tests je l'ai mis sous src/test/java. Ma classe de test est nommé SeleniumTest.java il suit la convention (*Test.java) voici le code:Maven ne peut pas voir les tests

<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"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.tests.functional.selenium</groupId> 
    <artifactId>functionalTestsSelenium</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>functionalTestsSelenium Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.seleniumhq.selenium.client-drivers</groupId> 
      <artifactId>selenium-java-client-driver</artifactId> 
      <version>1.0.2</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 
    <build> 
     <finalName>functionalTestsSelenium</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.0.2</version> 
      </plugin> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>tomcat-maven-plugin</artifactId> 
       <version>1.0-beta-1</version> 
      </plugin> 


      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>selenium-maven-plugin</artifactId> 
      </plugin> 


      <!-- Start the tomcat server and Deploy the war --> 
      <plugin> 
       <groupId>org.codehaus.cargo</groupId> 
       <artifactId>cargo-maven2-plugin</artifactId> 
       <configuration> 
        <wait>false</wait> 
        <container> 
         <containerId>tomcat6x</containerId> 
         <type>installed</type> 
         <home>${env.CATALINA_HOME}</home> 
        </container> 
       </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> 


      <!-- Start the selenium server --> 
      <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> 

      <!-- Fire the function tests --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.4.3</version> 
       <configuration> 
        <junitArtifactname> 
         org.junit:com.springsource.org.junit 
        </junitArtifactname> 
        <excludes> 
         excluding the test class in the functional tests package 
         during the test phase 
         <exclude>**/functional/*Test.java</exclude> 
        </excludes> 
       </configuration> 
       <executions> 
        <execution> 
         <!-- Running the tests in the functional tests package during the integration tests phase. --> 
         <id>integration-tests</id> 
         <phase>integration-test</phase> 
         <goals> 
          <goal>test</goal> 
         </goals> 
         <configuration> 
          <skip>false</skip> 
          <excludes> 
           <exclude>none</exclude> 
          </excludes> 
          <includes> 
           <include>**/functional/*Test.java</include> 
          </includes> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

voici ma classe de test:

package functional; 
import com.thoughtworks.selenium.SeleneseTestCase; 
public class SeleniumTest extends SeleneseTestCase { 

    @Override 
    public void setUp() throws Exception { 
     setUp("http://www.netapsys.fr"); // délégation de la configuration à la classe parente 
    } 
    public void test() { 
     selenium.open("/"); // ouverture de la page 
     selenium.waitForPageToLoad("5000"); 
     assertTrue(selenium.isTextPresent("Netapsys")); 
    } 
} 

est ici le résultat de la console après l'exécution:

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building seleniumproject Maven Webapp 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ seleniumproject --- 
[debug] execute contextualize 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 0 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ seleniumproject --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ seleniumproject --- 
[debug] execute contextualize 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory C:\Users\neila\workspace\seleniumproject\src\test\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ seleniumproject --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ seleniumproject --- 
[INFO] No tests to run. 
[INFO] Surefire report directory: C:\Users\neila\workspace\seleniumproject\target\surefire-reports 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] 
[INFO] --- maven-war-plugin:2.0.2:war (default-war) @ seleniumproject --- 
[INFO] Exploding webapp... 
[INFO] Assembling webapp seleniumproject in C:\Users\neila\workspace\seleniumproject\target\seleniumproject 
[INFO] Copy webapp webResources to C:\Users\neila\workspace\seleniumproject\target\seleniumproject 
[INFO] Generating war C:\Users\neila\workspace\seleniumproject\target\seleniumproject.war 
[INFO] Building war: C:\Users\neila\workspace\seleniumproject\target\seleniumproject.war 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.922s 
[INFO] Finished at: Wed Jul 04 08:18:56 GMT+01:00 2012 
[INFO] Final Memory: 5M/15M 
[INFO] ------------------------------------------------------------------------ 
+0

Avez-vous essayé avec une version JUnit 4.x? – romaintaz

+0

non mais je vais maintenant –

+0

Comment essayez-vous de les exécuter? Est-ce que vous exécutez 'mvn integration-test' (ou quelque chose comme ça, j'oublie) ou simplement' mvn test'? –

Répondre

5

Votre test appartient au package functional. Ainsi, il ne fonctionnera pas pendant la phase de test, comme pom précise que tout paquet *functional* doit être exclu:

  <configuration> 
       <junitArtifactname> 
        org.junit:com.springsource.org.junit 
       </junitArtifactname> 
       <excludes> 
        excluding the test class in the functional tests package 
        during the test phase 
        <exclude>**/functional/*Test.java</exclude> 
       </excludes> 
      </configuration> 

Votre pom est configuré pour démarrer (et arrêter) le serveur Selenium pendant les phases pre-integration-test et post-integration-test. Cependant, au cours de ces phases, vous ne demandez pas d'effectuer un test. Je suggère que vous jetez un oeil sur le failsafe Maven plugin pour exécuter vos tests functional.* Selenium au cours de la phase integration-test.

+1

Je suis d'accord avec romaintaz, cependant, je crois qu'il devrait aussi être possible de définir une seconde exécution pour le' maven -surefire-plugin' dans lequel vous pouvez dire aux tests * functional * de s'exécuter dans la phase respective – carlspring

+0

@carlspring Cela peut être fait comme ça si vous préférez, en liant le plugin surefire à la 'phase-integration'. mieux vaut utiliser le plugin failsafe pour que les tests d'intégration suivent les conventions de Maven ... – romaintaz