我有一个标准的maven项目布局
某些配置文件存储在src/main/conf
中
现在,我想在src/test
的单元测试中阅读这些文件(例如,从其中一个文件中读取属性)。
我怎么能完全这样做?
答案 0 :(得分:7)
您需要配置maven以将这些文件用作测试资源。
只需在pom.xml
中指定即可。 maven将处理与测试资源相同的配置文件。
<build>
...
<testResources>
<!-- don't forget to specify the default test resources directory -->
<testResource>
<directory>src/test/resources</directory>
</testResource>
<!-- add the config directory -->
<testResource>
<directory>src/main/conf</directory>
</testResource>
</testResources>
...
</build>
此设置将强制maven在运行单元测试之前将配置文件复制到target/tests-classes
。
然后,您的单元测试将在类路径上包含配置文件,您可以使用getClass().getResource("/yourConfigFile.conf")
读取它们。
答案 1 :(得分:2)
您应该将这些文件放在src/main/resources
中,这样它们就会包含在类路径中,并可通过this.getClass().getResourceFromStream("...")
访问。
编辑:正如bbaja42所说,如果他们只用于测试,他们应该进入src/test/resources
。
答案 2 :(得分:2)
只需补充Christoffer的答案,为了在测试中访问src / main / conf,您需要将该文件夹添加到maven-surefire-plugin类路径配置中:
<build>
<plugins>
.....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>src/main/conf</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
....
然后你就可以从classpath加载文件了。假设文件为src / main / conf / test.txt:
this.getClass()。的getResourceAsStream( “/的test.txt”)
为了在Eclipse中运行它,您还需要将该文件夹添加到构建路径中。
您可以在以下网址找到更多信息:http://maven.apache.org/plugins/maven-surefire-plugin/examples/configuring-classpath.html