Доступ к файлам в папке webapp во время модульного тестирования - PullRequest
0 голосов
/ 16 января 2020

Я видел несколько вариантов этого вопроса в StackOverflow, но ни один из них точно не описывает мой сценарий или не предлагает решение, которое работает для меня.

Я создаю Java EE веб-игру. Я использую JUnit для модульного тестирования в процессе сборки. В папке моего веб-приложения есть ресурсы, к которым пользователи получают доступ через HTTP-запросы GET. В моем исходном коде у меня есть соответствующие Java классы, которые реализуют логику c этих активов.

Например, у меня есть класс с именем CookingPot, который реализует логику c для кастрюли. в моей игре. В папке webapp у меня есть файлы, которые предоставляют пользователю мультимедиа и контент для приготовления кастрюль, например:

webapp/assets/items/CookingPot.svg (an image of the cooking pot)
webapp/assets/items/CookingPot.html (an HTML description of the cooking pot)

Во время юнит-тестирования я хотел бы убедиться, что для каждого игрового предмета ( в этом примере (элемент CookingPot) в нужном месте в папке веб-приложения находится файл SVG и HTML.

Как выполнить этот тест? Тесты JUnit выполняются в среде сборки Maven, которая не предоставляет сервер Tomcat для тестирования, поэтому доступ к ним через HTTP не будет работать. Я пробовал:

URL svg = getClass().getResource("/webapp/assets/items/CookingPot.svg");
URL svg = getClass().getResource("webapp/assets/items/CookingPot.svg");

Но они возвращают ноль.

У меня такое ощущение, что здесь что-то простое, что мне не хватает, но я не знаю, что это такое. Конечно, должен быть способ проверить, существуют ли эти файлы во время процесса сборки?

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 16 января 2020

Папка src/main/webapp не является частью пути к классам (по умолчанию). Следовательно, вы не можете получить к ним доступ с помощью кода, который вы указали в своем вопросе. Если ваши файлы будут частью src/main/resources, вы можете получить к ним доступ с помощью .getResource("") из своего модульного теста без дальнейшей настройки.

Изменение плагина Surefire и включение папки webapp может решить вашу проблему, используя ваш текущий setup (как упомянуто здесь: модульному тесту в Maven требуется доступ к каталогу src / main / webapp ):

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <configuration>
      <additionalClasspathElements>
        <additionalClasspathElement>src/main/webapp</additionalClasspathElement>
      </additionalClasspathElements>
    </configuration>
  </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...