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并没有把“resources”这个目录当成测试源根目录,所以我手动把它标记为“测试源根”。

然后我将文件“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的资源目录

  <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 回答