2013-10-31 20 views
2

**首先:我已經從字面上閱讀了關於如何做到這一點的每篇文章,我遵循包括來自Maven本身的信函的所有說明。如何讓Maven使用我的TestNG XML文件?

我已經使用TestNG將Eclipse Selenium項目轉換爲Maven項目。我無法讓Maven從Test.XML文件運行我的測試,而不是運行在默認模式下,它只是用文件名中的單詞「Test」來提取任何東西......我可以直接執行test.xml,作品,所以我認爲我獲得了轉換權。由於我正在從現有框架轉換,所以需要將所有工作都切換到默認狀態,「只需要抓住任何名爲」test「」的操作是令人望而卻步的,我希望我的Test.XML文件可以被SureFire使用。

我是Maven的新手,所以原諒我沒有使用正確的術語,但是:當我'測試'的'目標'運行'POM文件時,它只是忽略我的test.xml文件並運行任何與「測試」在其中,我通過更改名稱等來驗證這一點......我主要是從Eclipse運行的,同樣的結果幾次我嘗試命令行。

這裏是我的POM:

<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>test</groupId> 
    <artifactId>TestSuite</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>TestSuite</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugin</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.16</version> 
       <configuration> 
        <suiteXmlFiles> 
         <suiteXmlFile>src/test/resources/test.xml</suiteXmlFile> 
        </suiteXmlFiles> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8.5</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>net.sourceforge.jexcelapi</groupId> 
      <artifactId>jxl</artifactId> 
      <version>2.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.seleniumhq.selenium</groupId> 
      <artifactId>selenium-java</artifactId> 
      <version>2.35.0</version> 
     </dependency> 
    </dependencies> 
</project> 

如果您需要更多的信息,讓我知道,我會修改,但我的TestNG的文件字面上只是調用一個測試類沒有多餘的裝飾,如果我直接執行它作爲一個TestNG的工作原理測試。其餘的代碼工作,所以我認爲這不是。也許在Eclipse中的設置?

+0

您是否試過' test.xml'?我認爲該屬性的路徑是相對於目標/類文件夾,這是運行時的工作目錄,而不是項目。讓我知道如果這項工作 – Hilikus

+0

感謝reaponse ...是的,我只是做了一個很好的措施......我的文件駐留在項目根目錄的上述路徑...我嘗試了很多不同的路徑和該文件的位置。這並不是說這不是問題,我似乎無法弄清楚。 – Derek

回答

0

我無法讓Maven從Test.XML文件運行我的測試,而不是運行在默認模式下,它只是用文件名中的單詞「Test」來提取任何東西。

也就是說可能是因爲Maven Surefire Plugin's default inclusion patterns

默認情況下,一定能成功的插件會自動包括所有測試類具有以下通配符模式:

「** /測試*的.java 「 - 包括所有以」Test「開頭的子目錄和所有的java文件名。 「**/* Test.java」 - 包含所有以「Test」結尾的子目錄和所有的java文件名。 「**/* TestCase.java」 - 包含所有以「TestCase」結尾的子目錄和所有的java文件名。

而且,如您所知,「Suite XML Files配置將覆蓋包含並排除模式,並在套件文件中運行所有測試。」

我無法確定,但它看起來像讀取test.xml文件(找不到文件,解析,編碼問題等)有一些麻煩,並且Surefire退回到包含/排除策略。

你可以做一些測試來證明這一點。在「配置」中添加「包含」和/或「排除」部分,並排除除隨機之外的所有類。 如果運行該隨機類,則簡單地忽略'suiteXmlFiles'。

希望這會縮小範圍。

0

該groupid不正確。您在插件中缺少s。它應該是<groupId>org.apache.maven.plugins</groupId>

我認爲發生了什麼,因爲這是maven默認爲默認的測試階段配置和忽略你的。

希望它有幫助。

相關問題