有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在单元测试中读取配置文件?

我有一个标准的maven项目布局
一些配置文件存储在src/main/conf
现在我想在src/test中的单元测试中读取这些文件(例如,从其中一个文件中读取属性)
我该怎么做呢


共 (3) 个答案

  1. # 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. # 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. # 3 楼答案

    你应该把这样的文件放在src/main/resources中,这样它们就会被包含在类路径中,并且可以通过this.getClass().getResourceFromStream("...")访问

    编辑:正如bbaja42所说,如果它们只用于测试,那么它们应该进入src/test/resources