Как читать файлы конфигурации в модульном тесте? - PullRequest
3 голосов
/ 20 сентября 2011

У меня есть стандартный макет проекта Maven.
Некоторые файлы конфигурации хранятся в src/main/conf.
Теперь я хотел бы прочитать эти файлы в моем модульном тесте в src/test (например, прочитать свойства из одного из этих файлов).
Как я могу это сделать?

Ответы [ 3 ]

7 голосов
/ 20 сентября 2011

Вам необходимо настроить 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 перед запуском модульных тестов.Тогда ваши модульные тесты будут иметь конфигурационные файлы в classpath, и вы сможете прочитать их, используя getClass().getResource("/yourConfigFile.conf").

2 голосов
/ 20 сентября 2011

Просто дополняя ответ Кристоффера, чтобы получить доступ к 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

2 голосов
/ 20 сентября 2011

Вы должны поместить такие файлы в src/main/resources, чтобы они были включены в classpath и доступны через this.getClass().getResourceFromStream("...").

Редактировать: Как говорит bbaja42, если они используются только для тестов, они должнывойти в src/test/resources.

...