5

私は現在、Mavenが支援するプロジェクトに取り組んでいます。単体テストを実装するためにTestNgを選択しました。各Mavenビルドで単体テストを実行するために、maven-surefire-pluginをpom.xmlに追加しました。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
            <configuration>
            <!-- Configuring the test suites to execute -->
                <suiteXmlFiles>
                     <suiteXmlFile>testsuite-persistence-layer.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>

さらに、TestNgのTestSuiteXmlFileを使用して実行するテストを指定したいと思います。たとえば、私のpom.xmlでは、「testsuite-persistence-layer.xml」という名前のxmlファイルで定義されたテストを実行するようにsurefireプラグインを構成しました。

問題は、デフォルトで、surefireプラグインが私のプロジェクトのルートでこのxmlファイルを探しているように見えることです。surefireプラグインがTestSuitexmlファイルを検索するディレクトリを指定するにはどうすればよいですか?

TestNgのドキュメントによると、これは「maven.testng.suitexml.dir」プロパティを介して指定できますが、Surefireプラグインはそれを考慮していないようです。

4

1 に答える 1

7

私はあなたの問題を理解しているかどうかわかりません。相対パスと完全修飾パスの両方として、xmlファイルの正確な場所を簡単に指定できます。

<suiteXmlFile>c:/some/dir/testsuite-persistence-layer.xml</suiteXmlFile>

また

<suiteXmlFile>src/test/java/com/something/project/testsuite-persistence-layer.xml</suiteXmlFile>

しかし、それは簡単すぎるので、xmlが配置されているディレクトリをパラメータ化する方法を探していると思います。私の頭に浮かぶ簡単な解決策は

<suiteXmlFile>${xmlPath}/testSuite.xml</suiteXmlFile>

今、あなたは走ることができます

mvn test -DxmlPath=c:/some/path

もちろん、xmlPathは単なる名前であり、他の任意の変数名を使用できます。

コマンドラインから引数としてパスを渡したくない場合は、POMのプロパティセクションでxmlPath変数の値を指定できます。プロパティは、<project>ブランチのすぐ下にある主要なセクションの1つです。

<project ... >
    ...

    <properties>
        <xmlPath>c:/some/path</xmlPath>
    </properties>
        ...

    <build>
        ...
        <plugins>
        ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>${xmlPath}/testSuite.xml</suiteXmlFile>
                    </suiteXmlFiles>                                        
                    ...
                </configuration>
            </plugin>
        ...
        </plugins>
        ...
    </build>
    ...

</project>
于 2012-05-21T19:31:47.110 に答える