Почему я не могу получить доступ к src / test / resources в тестовом запуске Junit с Maven? - PullRequest
44 голосов
/ 30 сентября 2011

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

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

Изнутри метода Junit @Before.

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

Ответы [ 2 ]

66 голосов
/ 30 сентября 2011

Доступ 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().

3 голосов
/ 30 сентября 2011

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

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

...