2012-05-10 65 views
8

我使用Selenium WebDriver,Eclipse,TestNG和Surefire插件。我無法從pom.xml運行testng.xml文件。當我使用mvn test運行pom.xml時,它直接運行位於src/test/java中的文件。如何從Maven中的pom.xml調用testng.xml文件

我pom.xml的代碼是

<groupId>angel</groupId> 
<artifactId>Angel</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>Angel</name> 
<url>http://maven.apache.org</url> 

<properties> 
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> 

<dependencies> 
      <!-- Java API to access the Client Driver Protocols --> 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.21.0</version> 
</dependency> 
    <!-- JExcel API is a java library which provides the ability to read, write, and     modify Microsoft Excel spreadsheets.--> 
    <dependency> 
    <groupId>net.sourceforge.jexcelapi</groupId> 
    <artifactId>jxl</artifactId> 
    <version>2.6.10</version> 
    </dependency> 
    <dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.14</version> 
</dependency> 
<!-- Java API for manipulate the Microsoft Excel Sheets. --> 
<dependency> 
<groupId>org.apache.poi</groupId> 
<artifactId>poi-contrib</artifactId> 
<version>3.5-beta5</version> 
</dependency> 
<!-- Java Mail API used to send Mails. --> <dependency>    <groupId>javax.mail</groupId> 
<artifactId>mail</artifactId> <version>1.4.3</version> 
</dependency> 
<dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <version>6.3.1</version> 
    <scope>test</scope> 
</dependency> 
</dependencies> 
    <build> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugin</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.12</version> 
      <configuration> 
      <suiteXmlFiles> 
       <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile> 
      </suiteXmlFiles> 
       </configuration> 
    </plugin> 
<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration>  </plugin> 

</plugins> 
    </project> 

請幫助我。

我的項目結構是

project 
--src/main/java 
--src/main/resources 
--src/test/java 
    | 
    --my testng class file with @Test method. 
--src/test/resources 
    | 
     --testng.xml 
--maven dependencies 
--jre system library 
--src 
    | 
    --main 
    --test 
--target 
pom.xml 

- =>文件夾名稱 | - =>子文件夾名稱

我的testng.xml文件是...

<?xml version="1.0" encoding="UTF-8"?> 
    <suite name="Suite1" verbose="1" > 

<test name="samplePage Test" > 
    <classes> 
    <class name="TestScripts.SamplePage" > 
     <methods> 
      <include name = "SamplePageTest_Execution"/> 
     </methods> 
    </class> 
</classes> 
</test> 
    <test name="newSamplePage Test" > 
    <classes> 
    <class name="TestScripts.NewSamplePage" > 
     <methods> 
      <include name = "NewSamplePage_Execution02"/> 
     </methods> 
     </class> 
    </classes> 
    </test> 
</suite> 

我只是想通過testng.xml文件從pom.xml調用SamplePage_Execution方法。

我SamplePage_Execution方法是

public class sample{ 
    @Test 
    public static void SamplePageTest_Execution() throws Exception{ 

String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); 
boolean testStatus = true; 
     driver = new FirefoxDriver(); 
     driver.get("http://www.google.com"); 

    WebElement searchField = driver.findElement(By.name("q")); 

    searchField.sendKeys(new String [] {"selenium2.0"}); 

    searchField.submit(); 

    driver.close(); 
}} 
+0

運行Maven測試調用命令行的testng.xml我下面的代碼無法正常工作: <配置> testng.xml 下面的代碼正常工作: <配置> **/* ST.java 注:我的硒java代碼名稱爲:Selenium2ExampleST.java –

回答

2

你應該從一個類改變suiteXmlFile到一個文件,而不是爲它位於的src /測試/資源例子的testng.xml文件。此外更新surefire插件(當前版本2.12)。另一件事是硒測試通常是集成測試,而不是單元測試。

更新 您必須添加testng依賴項,而不是junit依賴項。因此,請刪除junit依賴項,並相應地將testng依賴項添加到maven-surefire-plugin的文檔中。

+0

我改變了雙方的事情,但我沒有得到解決。你能否更詳細地解釋一下。 – Manigandan

+0

這是什麼意思?你有錯誤信息嗎?你有更新maven-surefire-plugin到2.12嗎? testng.xml文件位於哪裏? – khmarbaise

+0

不,我沒有得到任何錯誤消息。實際上,我在「src/test/java」目錄中有一個testng類。正如我前面提到的,當我運行pom.xml文件時,它直接執行testng類文件,並且運行良好。但我想通過使用testng.xml文件來運行testng類文件,並且應該通過pom.xml調用testng.xml文件。並且我還將maven-surfire-plugin更新爲2.12。 – Manigandan

8

在pom.xml中我下面的代碼運行良好:通過使用以下命令

<profiles> 
    <profile> 
     <id>selenium-tests</id> 
     <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.12.4</version> 
       <configuration> 
        <suiteXmlFiles> 
        <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile> 
        </suiteXmlFiles> 
       </configuration> 
      </plugin>  
     </plugins> 
     </build> 
    </profile> 
</profiles> 

運行測試:

mvn clean test -U -Pselenium-tests 

OR,

mvn clean test 
+0

在配置下添加suiteXmlFile行爲我工作。謝謝。 – newuser

+0

非常感謝,newuser –

0

我想有這裏是基本錯誤.. pom.xml =維護的包定義由Maven編寫

和testing.xml(任何xml用戶可能定義)用於TestNG測試定義。您可以使用xml配置從自定義運行設置中進行自定義配置,以運行Test NG 而且,您在xml文件(測試名稱,偵聽器類名稱,套件名稱或類名稱)中提供的配置應該與您的測試類匹配。就像你已經刪除類名= TestScripts.SamplePage,但你的測試類=樣本,所以這個XML永遠不會運行你的測試類。 小例子:<class name="com.automation.test.TestA" />它在我的測試xml中,我的測試類將是TestA。

0

可以給予直接的testng.xml代替的src /測試/資源/的testng.xml

我的pom.xml工作正常。用你的POM.xml替換它。更新你的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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>Automation</groupId> 
    <artifactId>Automation</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.18.1</version> 
     <configuration> 
      <forkCount>0</forkCount> 
      <suiteXmlFiles> 
      <suiteXmlFile>testng.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.46.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.5.0-b01</version> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.9.6</version> 
    </dependency> 
    </dependencies> 
</project> 
0
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.adiltutorials.facebook</groupId> 
    <artifactId>WebdriverTests</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
     <configuration> 
      <forkCount>0</forkCount> 
      <suiteXmlFiles> 
      <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.52.0</version> 
    </dependency> 
    <dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <version>6.8</version> 
</dependency> 
</dependencies> 

</project> 
+0

這將解決它 –

2

您可以直接通過

mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml 
+0

簡單和容易的解決方案 –