Загрузка файла свойств для maven-surefire-plugin - PullRequest
0 голосов
/ 20 августа 2011

У меня есть класс testng , который тестирует класс, который по очереди загружает свойство из classpath. Когда я запускаю maven install, я получаю сообщение об ошибке, упомянув, что файл не найден. Он не может найти файл свойства хотя у меня это в src/test/resources. Как решить эту проблему?

Java-код имеет конструктор, который пытается загрузить файл свойств Properties props = JobUtils .loadProperties("x.properties"); Моя конфигурация maven:


<plugin>
  <groupId>org.apache.maven.plugins
  <artifactId>maven-surefire-plugin
  <version>2.5
  <configuration>
    <skipTests>false</skipTests>
  </configuration>
</plugin>

с:


<build>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <filtering>false</filtering>
    </testResource>
  </testResources>
</build>

Также у меня есть это x.properties в src/test/resource

Трассировка стека Запуск TestSuite:


java.io.FileNotFoundException: x.properties (The system cannot find the file specified)
   at java.io.FileInputStream.open(Native Method)
   at java.io.FileInputStream.(FileInputStream.java:106)
   at java.io.FileInputStream.(FileInputStream.java:66)

Также обратите внимание на тестовый класс, который у меня есть, пытается создать экземпляр этого Java-кода и протестировать его.

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Ваш x.properties файл из каталога src/test/resources фактически копируется в каталог target/test-classes после выполнения фазы Maven process-test-resources.Поэтому, если вы хотите, чтобы ваше приложение могло его найти, вы должны использовать следующий путь к файлу:


Properties props = JobUtils .loadProperties("target/test-classes/x.properties");

Однако я не думаю, что это именно то, что вы ищете.Я рекомендую читать файл свойств непосредственно из CLASSPATH (без использования файловой системы напрямую), используя такой код:


InputStream is = getClass().getResourceAsStream("/x.properties");
Properties p = new Properties();
try {
  p.load(is);
} catch (IOException e) {
  e.printStackTrace();
} finally {
  if (is != null) {
    try {
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Используя этот подход, вы сможете загрузить файл свойств даже изнутриJAR-файл, распространяемый клиенту или также из файла конфигурации, который добавляется в CLASSPATH в виде сценария запуска.

1 голос
/ 29 декабря 2012

У меня была такая же проблема, что файл не найден.Однако я дошел до того, что понял, что maven нашел его для использования, когда запустил mvn test в командной строке.Это была просто моя Eclipse IDE, которая сказала, что не может его найти.Когда я изменил в своем каталоге IDE src / test / resources на «исходный каталог», то и моя среда IDE была в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...