java如何在单元测试中读取配置文件? 1 月,3 周 Questions & Answers 10954 我有一个标准的maven项目布局 一些配置文件存储在src/main/conf中 现在我想在src/test中的单元测试中读取这些文件(例如,从其中一个文件中读取属性) 我该怎么做呢
# 1 楼答案 为了补充Christoff的答案,为了在测试中访问src/main/conf,您需要将该文件夹添加到maven surefire插件类路径配置中: <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> 然后就可以从类路径加载文件了。假设文件为src/main/conf/test。txt: 这个。getClass()。getResourceAsStream(“/test.txt”) 为了在Eclipse中运行此功能,还需要将该文件夹添加到构建路径中 你可以在以下网址找到更多信息:http://maven.apache.org/plugins/maven-surefire-plugin/examples/configuring-classpath.html
# 2 楼答案 您需要配置maven以将这些文件用作测试资源 只需在^{中指定它。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")读取它们
# 3 楼答案 你应该把这样的文件放在src/main/resources中,这样它们就会被包含在类路径中,并且可以通过this.getClass().getResourceFromStream("...")访问 编辑:正如bbaja42所说,如果它们只用于测试,那么它们应该进入src/test/resources
# 1 楼答案
为了补充Christoff的答案,为了在测试中访问src/main/conf,您需要将该文件夹添加到maven surefire插件类路径配置中:
然后就可以从类路径加载文件了。假设文件为src/main/conf/test。txt:
这个。getClass()。getResourceAsStream(“/test.txt”)
为了在Eclipse中运行此功能,还需要将该文件夹添加到构建路径中
你可以在以下网址找到更多信息:http://maven.apache.org/plugins/maven-surefire-plugin/examples/configuring-classpath.html
# 2 楼答案
您需要配置maven以将这些文件用作测试资源
只需在^{中指定它。maven将处理与测试资源相同的配置文件
此设置将强制maven在运行单元测试之前将配置文件复制到
target/tests-classes
。 然后您的单元测试将在类路径上有配置文件,您可以使用getClass().getResource("/yourConfigFile.conf")
读取它们# 3 楼答案
你应该把这样的文件放在
src/main/resources
中,这样它们就会被包含在类路径中,并且可以通过this.getClass().getResourceFromStream("...")
访问编辑:正如bbaja42所说,如果它们只用于测试,那么它们应该进入
src/test/resources