2010-11-19 6 views
32

Mavenのsurefire(testing)プラグインは、src/test/resourcesのファイルをtarget/test-classesにコピーします。 src/test/javaの.javaをコンパイルし、コンパイルされた.classファイルをtarget/test-classesにコピーします。Maven(surefire):src/test/javaからテストリソースをコピーする

しかし、src/test/javaからリソースをコピーするのではなく、srcの並列階層よりもリソースである.javaクラスと同じディレクトリにテストリソースを配置する方が便利です/テスト/リソース。

mavenにsrc/test/javaからリソースをコピーさせることはできますか?

+3

あなたはそれを行うためにMavenを設定することができますが、それは規約に従うとリソースファイルを置くために、一般的に「より便利」でありますMavenがそうすべきだと思っているところです。 – Thilo

+0

しかし、unitilsでは、dbunit xmlファイルを使用するテストと同じディレクトリにdbunit xmlファイルを置くことが一般的です。そして、率直に言って、それは私のチームにとってはより簡単になるでしょう。これの全体的なポイントは、dbunitテストを書くことの痛みを軽減することです。 – tpdi

答えて

18

リソースのコピーはすべてmaven-resource-pluginによって行われ、そのドキュメントを読むと、src/test/javaからリソースのコピーを追加する方法がわかります。

デフォルトのライフサイクルに含まれるテストリソースの目標については、http://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.htmlを参照してください。

http://maven.apache.org/pom.htmlを参照し、<testResources>を探してください。

+0

ありがとうございます。しかし、私はまだ不明です。 タグを含めることができますが、* test *リソースをコピーするには、プラグインに何かを追加する必要がありますか? – tpdi

+0

@tpdi編集を参照してください。 – bmargulies

0

src/test/javaから リソースをコピーするにはどうすればよいですか?

はい、これはantrun pluginで簡単に実現できます。あなたはsee usage example here

+0

私はそれをtestResourcesに追加するのと比べて '簡単に'呼びます。 – bmargulies

0

は答えを与えたが、私はいくつかの詳細を記入してみましょう。 - .javaソースコードを含む、行っておりません

<testResources> 
    <testResource> 
    <directory>${project.basedir}/src/test/java</directory> 
    </testResource> 
</testResources> 

のsrc /テスト/ Javaでのコピーのすべてをその:

<testresources>はこのように、MavenのPOMの<build>ノードに追加することができます欲しいです。

標準的な親POMのデフォルトの<testResources>設定を上書きして置き換えます(継承が変更されない限り)。標準の親はsrc/test/resourcesをコピーしているので、それを上書きすることで、通常と同じようにコピーされません。 (特に、これを行うための私の全理由は、unitils.propertiesファイルをコピーすることを望むunitilsを使用することです - それはsrc/test/resourcesの(私にとっては、とにかく)src/test/resourcesにあります。

src /テスト/リソース:

<testResources> 
    <testResource> 
    <directory>${project.basedir}/src/test/java</directory> 
    </testResource> 
    <testResource> 
    <directory>${project.basedir}/src/test/resources</directory> 
    </testResource> 
</testResources> 

コピー順番に、両方の/ srcに/テスト/ javaの(およびサブディレクトリ)内に存在するファイルのためのように/ srcに/テスト/リソース(およびサブディレクトリ)にあること、 src/test/resourcesのバージョンは、テストクラスで終わるものです。

これで、でなく、の.javaファイルをコピーする必要があります。

<testResources> 
    <testResource> 
    <directory>${project.basedir}/src/test/java</directory> 
    <excludes> 
     <exclude>**/*.java</exclude> 
    </excludes> 
    </testResource> 
    <testResource> 
    <directory>${project.basedir}/src/test/resources</directory> 
    </testResource> 
</testResources> 
28

bmarguliesヘルパーのMavenプラグインを作成し使用して試すことができます

1

テスト設定をsrc/test/resourcesフォルダ(ソースファイルの場合はsrc/test/javaのアナログ)に置いたときの唯一の方法です。このフォルダのファイルは、テストの実行中にクラスパス上にあるtarget/test-classesフォルダにコピーされます。私はなぜ知らないが、次の設定は私のために動作しませんでした:

<testResources> 
    <testResource> 
    <directory>${project.basedir}/src/test/java</directory> 
    <excludes> 
     <exclude>**/*.java</exclude> 
    </excludes> 
    </testResource> 
    <testResource> 
    <directory>${project.basedir}/src/test/resources</directory> 
    </testResource> 
</testResources> 
関連する問題