Подтвердить что ты не робот

Почему я не могу получить доступ к src/test/resources в тестовом запуске Junit с Maven?

У меня возникают проблемы с запуском следующего кода:

configService.setMainConfig("src/test/resources/MainConfig.xml");

Из метода Junit @Before.

Так ли Maven создает свою целевую папку?

4b9b3361

Ответ 1

Доступ MainConfig.xml напрямую. Содержимое каталога src/test/resources помещается в корень вашего CLASSPATH.

Точнее: содержимое src/test/resources копируется в target/test-classes, поэтому, если у вас есть следующая структура проекта:

.
└── src
    └── test
        ├── java
        │   └── foo
        │       └── C.java
        └── resources
            ├── a.xml
            └── foo
                └── b.xml

Это приведет к следующему тестовому содержимому CLASSPATH:

  • /foo/C.class
  • /a.xml
  • /foo/b.xml

Чтобы получить доступ к файлам из источника Java, используйте getClass().getResource("/MainConfig.xml").getFile().

Ответ 2

Я думаю, setMainConfig ожидает путь к ресурсу, который будет загружаться с использованием ClassLoader, а не относительный путь к файлу. Это поможет, если вы связались с javadoc этого таинственного метода configService.setMainConfig.

Если мое предположение верно, то путь должен быть только MainConfig.xml. Mave копирует содержимое src/test/resources в папку target/test-classes (IIRC). И эта папка тестовых классов находится в пути к классу модульных тестов.