[英]How to get Maven to use my TestNG XML file?
**第一:我已經閱讀了這里的每篇文章,了解如何執行此操作,我正在遵循這封信的所有說明,包括來自Maven本身的說明。
我已經將使用TestNG的Eclipse Selenium項目轉換為Maven項目。 我無法讓Maven從Test.XML文件運行我的測試,而不是在默認模式下運行,在默認模式下,它只會選擇文件名中帶有單詞“ Test”的任何內容...我可以直接執行test.xml可以,所以我認為轉換正確。 由於我是從現有框架轉換而來,因此將所有內容切換為使用默認的“僅抓取稱為'test'的任何東西”所需的工作量是令人望而卻步的,我希望SureFire使用我的Test.XML文件。
我是Maven的新手,所以請原諒我使用的術語不正確,但是:當我以“目標”的“目標”“運行” POM文件時,它只是忽略了我的test.xml文件,並在其中運行帶有“ test”一詞的任何內容,我通過更改名稱等方式驗證了這一點。。。我主要是從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中的設置?
我無法讓Maven從Test.XML文件運行測試,而不是在默認模式下運行,在默認模式下Maven只會選擇文件名中帶有單詞“ Test”的任何內容。
這可能是由於Maven Surefire插件的默認包含模式 :
默認情況下,Surefire插件將自動包含具有以下通配符模式的所有測試類:
“ ** / Test * .java”-包括其所有子目錄以及以“ Test”開頭的所有Java文件名。 “ ** / * Test.java”-包括其所有子目錄以及所有以“ Test”結尾的Java文件名。 “ ** / * TestCase.java”-包括其所有子目錄以及所有以“ TestCase”結尾的Java文件名。
而且,正如您所知,“ Suite XML Files配置將覆蓋包含和排除模式,並在套件文件中運行所有測試。”
我不能肯定地說,但是看起來似乎在讀取test.xml文件時遇到了一些麻煩(找不到文件,解析,編碼問題等),Surefire退回了包含/排除策略。
您可以做一些測試來證明這一點。 在“配置”中添加“包含”和/或“排除”部分,並排除除隨機類之外的所有類。 如果運行該隨機類,則僅忽略“ suiteXmlFiles”。
希望這會縮小范圍。
組ID不正確。 您在插件中缺少。 它應該是<groupId>org.apache.maven.plugins</groupId>
我認為正在發生的事情是因為Maven默認使用默認的測試階段配置,而忽略了您的配置。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.