簡體   English   中英

如何使Maven使用我的TestNG XML文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM