2012-07-03 4 views
0

Я использую maven для запуска своих тестов на селен, но он не находит эти тесты, я помещаю его под src/test/java. Мой тестовый класс называется SeleniumTest.java поэтому следует конвенции (*Test.java) вот код:Maven не может видеть тесты

<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> 

вот мой тестовый класс:

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")); 
    } 
} 

вот результат консоли после запуска:

[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

Вы попробовали версию JUnit 4.x? – romaintaz

+0

нет, но теперь я буду –

+0

Как вы пытаетесь запустить их? Вы запускаете 'mvn integration-test' (или что-то вроде этого, я забыл) или просто' mvn test'? –

ответ

5

Ваш тест относится к пакету functional. Таким образом, он не будет работать во время тестовой фазы, так как ваш ПОМ определяет, что любой *functional* пакета должен быть исключен:

  <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> 

Вашего П настроен для запуска (и остановки) сервера Selenium во время pre-integration-test и post-integration-test фаз. Однако на этих этапах вы не просите выполнить какой-либо тест. Я предлагаю вам взглянуть на failsafe Maven plugin, чтобы провести тесты на селен в functional.* во время фазы integration-test.

+1

Согласен с romaintaz, однако, я считаю, что также должно быть возможно определить второе исполнение для' maven -surefire-plugin', в котором вы можете указать * функциональные * тесты для запуска в соответствующей фазе. – carlspring

+0

@carlspring Это можно сделать так, если вы предпочитаете, привязывая плагин surefire к «фазе интеграции». лучше использовать отказоустойчивый плагин для тестов интеграции, чтобы следовать соглашениям Maven ... – romaintaz

Смежные вопросы