在模块之间共享测试资源问题

时间:2012-01-12 13:20:47

标签: java testing maven

我想在2个模块A和B之间共享测试资源。在测试资源中,我有一些文件的目录。喜欢这个

-dir
----f1
----f2

我根据Share test resources between maven projects完成了所有工作。现在从B测试我可以使用如下语法访问资源:

 this.getClass().getClassLoader().getResource("dir/f1")

它完美无缺。但我不希望硬核所有文件名,如f1f2。我真正想要的是从目录中获取所有文件。像

 File foo = new File(this.getClass().getClassLoader().getResource("dir").getFile());
 assert foo.isDirectory()
 foo.list()
 ...

但是当我以这种方式创建foo时,它甚至不存在(foo.exist()返回false)。

我该如何处理?

更新。使用ant的替代解决方案

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <configuration>
                <target>
                    <fileset id="d" dir="${basedir}/src/test/resources/dir" includes="*"/>
                    <pathconvert property="d" refid="d">
                        <map from="${basedir}/src/test/resources/" to=""/>
                    </pathconvert>
                    <touch file="${basedir}/src/test/resources/d/listOfCharts.txt"/>
                    <echo file="${basedir}/src/test/resources/d/listOfCharts.txt" message="${charts}"/>
                </target>
            </configuration>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

1 个答案:

答案 0 :(得分:1)

您谈到的方法会创建一个JAR,可以在以后的测试中使用。你不能用这种方式列出Jar的内容。您需要使用Jar,您需要将其作为Jar专门读取

How do I list the files inside a JAR file?