如何从其他模块获取测试资源

时间:2015-11-09 21:10:51

标签: maven testing

我想在database模块中的内存测试中重用pizza模块的测试资源中的sql脚本,但我无法从中获取脚本classpath。

我的目录结构如下所示:

(为简洁起见,我离开了大部分文件/目录)

|   pom.xml
|   
|           
+---database
|   |   pom.xml
|   |   
|   \---src
|       \---test
|           \---resources
|               \---db
|                   \---migration
|                       \---hsqldb
|                               V1__create_schema.sql
|                               V2__config_data.sql
|                               V3__user_data.sql
|                               
+---pizza
|   |   pom.xml
|   |   
|   \---src
|       +---main
|       |   +---java
|       |   |   \---com
|       |   |       \---example
|       |   |           +---domain
|       |   |           |       DoStuff.java
|       |   |                   
|       |   \---resources
|       |       |   applicationContext.xml
|       |               
|       \---test
|           +---java
|           |   \---com
|           |       \---example
|           |               DoStuffTest.java
|           |                   
|           \---resources
|                   insert-test-data.sql
|                   test-applicationContext.xml
|                   test-in-memory-database.xml
|                   
\---poms
    |   pom.xml
    |   
    \---parent
            pom.xml

现在,我想在pizza模块中使用test-applicationContext从V1__create_schema.sql模块中的database脚本创建内存数据库,这样我就可以对它运行测试。我把它放到我的测试中 - applicationContext.xml

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:V1__create_schema.sql"/>
    <jdbc:script location="insert-test-data.sql"/>
</jdbc:embedded-database>

...但它在我的类路径上找不到V1__create_schema.sql。我尝试了许多不同的方法,包括maven-remote-resources-plugin,但没有运气。

我如何获取该资源?

......或者我可能使用了错误的方法?

编辑:非常感谢所有建议,我正在寻找的答案是来自Java1337的答案。但是,似乎这个问题已在SO上得到解答。我无法相信我错过了它!很抱歉给您带来不便!

1 个答案:

答案 0 :(得分:6)

如果你想获得“test-resources”,你需要在database / pom.xml中生成一个“test-jar”,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <goals>
          <goal>test-jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

然后在pizza / pom.xml中,引用测试jar如下:

<dependencies>
    <dependency>
        <groupId>groupId</groupId>
        <artifactId>database</artifactId>
        <type>test-jar</type>
        <version>version</version>
        <scope>test</scope>
    </dependency>
</dependencies>

干杯!