2012-07-03 21 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。因此,它不會在測試階段運行,爲您的POM指定任何*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> 

你的POM中配置爲啓動(停止)在pre-integration-testpost-integration-test階段Selenium服務器。但是,在這些階段,你不要求運行任何測試。我建議你看看failsafe Maven pluginintegration-test階段運行你的functional.*硒測試。

+1

我同意romaintaz,但是,我相信也應該可以爲'maven定義第二個執行-surefire-plugin',你可以告訴*功能*測試在相應的階段運行 – carlspring

+0

@carlspring如果你願意,可以這樣做,通過將surefire插件綁定到'integration-phase',但它是更好地使用故障安全插件進行集成測試,以遵循Maven約定... – romaintaz