web-dev-qa-db-ja.com

Mavenコマンドラインからtestng.xmlを実行する方法

私のpom.xmlに、構成で定義されたスイートファイルを含む次のエントリがあります。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>

Mavenを使用してcmdでこれを実行する正しい方法は何ですか?以下のコマンドでテストを実行できますが、pomで既に定義されている場合、コマンドでtestng.xmlを再度指定しても意味がありません。

 mvn clean test -DsuiteXmlFile=testng.xml
5
jeffsia

最も簡単な解決策は、surefireプラグインに以下の行を追加することです。

<suiteXmlFiles>
    <!-- pass testng.xml files as argument from command line -->
    <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>

そして、以下のようにxmlファイルを実行し、

mvn clean test -Dsurefire.suiteXmlFiles=/path/to/testng.xml
8
Prakash Palnati

Testng xmlが固定されている場合は、mvn clean test。 surefireプラグインはmavenのテスト段階でデフォルトで実行され、ハードコードされたxmlが取得されます。

4
niharika_neo

最初に、pom.xmlに改善を追加してください...実行セクションを追加する必要があります:

<executions>
<execution>
    <phase>test</phase>
    <goals>
        <goal>test</goal>
    </goals>
</execution>
</executions>

2番目に、変数を使用してpom.xmlにセクションを作成できます。そして、それをcmdから呼び出します。

<properties>
<defaultSuiteFiles>
        ./Sets/Suits/CMS_Administration_SiteBackup_029.xml,
    </defaultSuiteFiles>
    <suiteFile>${defaultSuiteFiles}</suiteFile>
</defaultSuiteFiles>
</properties>
...
...
<suiteXmlFiles>
    <suiteXmlFile>${suiteFile}</suiteXmlFile>
</suiteXmlFiles>

したがって、プロトタイプpom.xmlの結果

<?xml version="1.0" encoding="UTF-8"?>
<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">
.....
.....


<properties>        
    <defaultSuiteFiles>
        ./Sets/Suits/CMS_Administration_SiteBackup_029.xml,
    </defaultSuiteFiles>
    <suiteFile>${defaultSuiteFiles}</suiteFile>


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

<profiles>
    <profile>
        <id>Base configuration</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <defaultGoal>install</defaultGoal>
            <plugins>                    
                <plugin>
                    <groupId>org.Apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                    <inherited>true</inherited>
                    <executions>
                        <execution>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>${suiteFile}</suiteXmlFile>
                        </suiteXmlFiles>                            
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.Selenium</groupId>
        <artifactId>Selenium-Java</artifactId>
        <version>3.3.1</version>
    </dependency>
</dependencies>
</project>

そして、これを使用して、cmdの例:mvn test -DdefaultSuiteFiles="./YOUR_DIRECTORY/YOUR_SUITE.xml,"

説明:pom.xmlで、デフォルトのxmlを設定し、変数に配置します。また、cmdで変数を使用する場合は、値を書き換えます。

2
S-Kerrigan