Как изменить относительный путь ресурсов junit для конкретного модуля maven? - PullRequest
1 голос
/ 27 апреля 2019

У меня есть следующая структура проекта (и project, и module содержат pom.xml файлы):

image

Теперь в тестовом классе SomeTest.java Iхочу проверить некоторые функции, используя image.jpg в папке ресурсов.

Я использую следующий путь к файлу в качестве константы:

private static final String IMG_PATH = "src/test/resources/image.jpg";

Затем я читаю это как файл, используя

BufferedImage image = ImageIO.read(new File(IMG_PATH));

При запуске этого проекта со следующей конфигурацией Maven все работает нормально.

image

Однако при запуске модульного теста вручнуюизображение не может быть найдено, поскольку путь к файлу отличается.

При печати пути к файлу в качестве абсолютного пути отображается следующее:

C:\Users\Name\Documents\project\src\test\resources\image.jpg

Как видите, это project/src а не project/module/src.

Как настроить JUnit таким образом, чтобы корневая папка для ресурсов была папкой модуля Maven, а не папкой проекта?

Я хочу иметь возможность запускать тесты с помощью Maven, а такжерука для отладки.

1 Ответ

1 голос
/ 27 апреля 2019

Maven по умолчанию копирует (тестовую) папку ресурсов в папку target, которую затем добавляет в путь к классам.

Итак, работает то, что файл загружается как ресурс из пути класса во входной поток, а затем подается этот входной поток в ImageIO.read (java.io.InputStream) .

try (InputStream inStream = SomeTest.class.getResourceAsStream('/image.jpg')) {
    if (inStream != null) {
        BufferedImage image = ImageIO.read(inStream);
        // ...
    }
}

Обратите внимание, что / относится к корню пути к классам, на котором найдено изображение. Также обратите внимание, что обычно вы не должны ссылаться на src/ в вашем коде, поскольку во время выполнения видна только папка target.

Также обратите внимание, что Eclipse (или IntelliJ) при правильной настройке берет путь к классу от maven, поэтому эта настройка также должна облегчить запуск тестов в среде IDE для отладки.

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