2016-02-12 4 views
1

У меня проблема с моими испытаниями в Maven и Eclipse.Maven - Переопределить папку тестовых ресурсов

Я бегу мой тестовый набор из Eclipse, и все работает хорошо, но когда я бегу

mvn test 

У меня есть исключение, и оно появляется, когда я пытаюсь прочитать некоторые файлы в тестовых случаях, подобных этому:

final File javaFolder = new File("WEB-INF/test/file"); 

Когда я делаю, что у меня есть исключение нулевого указателя и отладки я увидел, что путь

C:\Users\myUser\AppData\Local\Temp\WEB-INF\test\file 

Кроме того, я думаю, что важно сказать, что я переписал тестовый каталог в моем пом, потому что нам нужны тестовые источники в специальном месте. Мы сделали это таким образом:

<testSourceDirectory>WEB-INF/test/java</testSourceDirectory> 

Так что мой вопрос: почему работают тесты с Maven не получают правильный рабочий каталог? Могу ли я определить конкретную папку для чтения некоторых файлов? Я пытался с вещами, как

getClass().getResource("myFile").getFile() 

но когда я напечатал абсолютный путь я снова

был C:\Users\myUser\AppData\Local...\myFile

Edit: У меня не было возможности следовать конвенции, потому что я говорю о большой системе, никогда не использовал Maven, поэтому не может изменить всю структуру каталогов. К сожалению, это не мое решение.

Кроме того, когда я печатаю мой «user.dir» У меня есть: C:\Users\myUser\AppData\Local\Temp

Edit2: мой путь проекта в другом разделе E:\work\myProject

ответ

2

ли ваш попытался добавить это к вашему pom.xml

 <testResources> 
      <testResource> 
       <directory>${basedir}/src/main/WEB-INF/test/file</directory> 
      </testResource> 
      <testResource> 
       <directory>${basedir}/src/main/WEB-INF/test/java</directory> 
       <excludes> 
        <exclude>**/*.java</exclude> 
       </excludes> 
      </testResource> 
     </testResources> 

Добавить это в раздел сборки, это позволит вам указать расположение папки testResource и где тестовые классы. Рассмотрите также проверку этого link, есть пример here, который может помочь вам создать pom.xml.

Помните, что есть раздел ресурсов и раздел testResource, вы должны изменить второй, указав на правильный сайт.

рассмотреть также с помощью final File javaFolder = new File("classpath:/WEB-INF/test/file");

+0

Спасибо за ответ. это: 'C: \ Users \ Marcos \ AppData \ Local \ Temp \ classpath: \ WEB-INF \ test \ file' Итак, у меня был NPE снова по понятным причинам :( – MarcosTonina

+0

добавление каталога testResource, скорее всего, решит проблему * предполагая, что он использует метод getResource() ', упомянутый в сообщении. Кстати, это комбо - лучший способ держать тесты гибкими. Другие решения в конечном итоге ломаются, когда вы меняете, скажем, тест сборки на тестовый прогон как веб-приложение (это мое лучшее предположение, почему они должны быть в WEB-INF) – Gus

+0

Может быть вариант переноса моих тестов с WEB-INF в другую папку. Вы рекомендуете это? – MarcosTonina

0

Основной принцип мавена является Конвенция по конфигурации. Вы можете задать честный вопрос, почему вам пришлось вырваться из хорошо организованной конвенции.

ли вы попробовать "SRC/главная/WebAPP/WEB-INF/тест/файл"

Update: Я думаю, вы должны войти в System.getProperty ("user.dir") в тестовом случае и убедитесь, что файл относится к печатной директории.

+0

Спасибо за ответ! У меня нет возможности изменить структуру папок - неважно, это не мое решение. В другой руке я не знаю, почему путь - это C: \ .... вместо src/main/webapp .. Итак, мои тестовые файлы правильно скомпилированы, проблема связана с моими ресурсами. – MarcosTonina

+0

Обновленный ответ выше. – JVXR

+0

Когда я печатаю user.dir, он поставляется с: C: \ Users \ myUser \ AppData \ Local \ Temp – MarcosTonina

0

Я думаю, что ваш каталог ресурсов отличается слишком. Итак, убедитесь, что вы установили каталог ресурсов (не только ваш исходный каталог) и загрузите файл, используя getResourcesAsStream

+0

У меня нет конфигурации в моем пом, который включает в себя любой ресурс :( – MarcosTonina

Смежные вопросы