1

私はIDEAでmavenによって管理されているプロジェクトを持っています。「src」の下に統合テスト用のカスタム ディレクトリを作成し、「intg」という名前を付けます。

myproject
  |- src
      |- intg
      |-   |- java
      |-   |- resources
      |- main
      |-   |- java
      |-   |- resources
      |- test
           |- java
           |- resources

私のPOM.xmlに、次を追加しました:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.basedir}/target/test-classes</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${project.basedir}/src/intg/resources</directory>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

次に、IDEA で POM.xml を再インポートしましたが、IDEA は「リソース」ディレクトリをテスト ソース ルート ディレクトリとして扱わないことがわかったため、手動で「テスト ソース ルート」としてマークしました。

次に、ファイル「test-data.txt」を配置し、テスト コードで取得します。

@Test
public void shouldGetTheFileFromClasspath() {
   URL resource = MyTest.class.getClassLoader().getResource("test-data.txt");
   assertNotNull(resource);
}

残念ながら、テストは失敗しました。「test-data.txt」を「src/test/resources」に移動すると、パスします。

どこが間違っているのか、どのように修正すればよいのかわかりません。それは私を一日中苦しめてきました、助けてください〜

4

2 に答える 2

0

まず、 Maven のディレクトリ規則に従う必要があります。ただし、自分のやり方でやると主張する場合。あなたがそれを行うことができる方法があります:

1. pom.xml を更新する

src/intg/javaソース コード ディレクトリとしてマークする

   <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <includes><include>**/src/intg/java/**</include></includes>
        </configuration>
      </plugin>
    </plugins>

あなたsrc/intg/sourceのリソースディレクトリを3月

  <build>
    <!--
    <directory>target</directory>
    <outputDirectory>target/classes</outputDirectory>
    <finalName>${artifactId}-${version}</finalName>
    <testOutputDirectory>target/test-classes</testOutputDirectory>
    <sourceDirectory>src/main/java</sourceDirectory>
    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/intg/resources</directory>
      </resource>
    </resources>
    <!--testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources-->
  </build>

2. アイデア プロジェクトをセットアップする

  • を右クリックしsrc/intg/javaディレクトリを次のようにマーク>ソースルート
  • を右クリックしsrc/intg/resourcesディレクトリを次のようにマーク>ソースルート

以上で、準備は完了です。Maven と Idea Junit の両方のテストをコンパイルして実行する必要があります。

于 2013-10-31T09:44:45.947 に答える
0

それを試してみてください:

<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>add-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/src/intg/resources</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>

次に、「リソースの生成とフォルダーの更新」を呼び出します

于 2013-10-31T09:29:54.487 に答える