Как определить, какие ресурсы доступны для тестов с использованием Maven? - PullRequest
0 голосов
/ 16 августа 2011

Контекст для моей проблемы приведен здесь: Как настроить pom для StrutsTestCase, чтобы найти web.xml?

В моем pom.xml я включил следующее, снадеется сделать различные файлы доступными во время тестов:

<testResources>
  <testResource>
    <directory>src/test/java</directory>
    <includes>
      <include>*.*</include>
    </includes>
  </testResource>
  <testResource>
    <directory>webapp/WEB-INF</directory>
    <includes>
      <include>*.xml</include>
    </includes>
  </testResource>
</testResources>

Я ожидаю, что все в src/test/java будет доступно во время тестов, как и web.xml, struts-config.xml в webapp/WEB-INF.

Файл web.xml не найден во время тестов.При устранении неисправностей у меня есть две проблемы.

  1. Я не совсем уверен, где я (или должен быть) говорю другому коду искать web.xml
  2. У меня нетИдея, как проверить, что web.xml доступен во время выполнения тестов.

Сейчас я спрашиваю # 2.Как я могу убедиться, что приведенный выше XML-файл делает то, что, как я думаю, должен, и делает web.xml доступным для использования в тестах?

Ответы [ 3 ]

1 голос
/ 16 августа 2011

Если вам не нужны дескрипторы развертывания (т. Е. web.xml, struts-config.xml и т. Д.) На самом тесте classpath (например, для поиска с помощью classloader.getResource*), тогда должно бытьВам не нужно добавлять или изменять testResources в POM.Попробуйте просто найти файл в своей тестовой настройке следующим образом:

File file = new File("webapp/WEB-INF/web.xml");
assumeTrue(file.exists());

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

1 голос
/ 18 августа 2011

Я думаю, что проблема с вашей конфигурацией может заключаться в том, что вы включили "WEB-INF" как часть вашего <testResource>. Что вы, вероятно, хотите, это что-то вроде этого:

<testResources>
    <testResource>
        <directory>webapp</directory>
    </testResource>
</testResources>

(Или, если вы используете Стандартное расположение каталогов , как указано здесь , directory будет вместо src/main/webapp.)

И, если вы хотите включить только файлы XML в каталог WEB-INF, вам понадобится дополнительная конфигурация "includes":

<testResources>
    <testResource>
        <directory>webapp</directory>
    </testResource>
    <includes>
        <include>WEB-INF/*.xml</include>
    </includes>
</testResources>

Чтобы проверить , что эти файлы действительно доступны в classpath во время ваших тестовых прогонов, вы можете сделать что-то вроде следующего:

URL webXml = getClass().getClassLoader().getResource("WEB-INF/web.xml");
assumeNotNull(webXml);

(Как уже упоминалось здесь , использование assumeNotNull необязательно.)

0 голосов
/ 16 августа 2011

Я думаю, вам нужно изменить путь к файлам xml, чтобы включить их в путь для ваших тестов.

Попытка:

<testResource>
   <directory>src/main/webapp/WEB-INF</directory>
   <includes>
      <include>*.xml</include>
   </includes>
</testResource>
...