Вопрос по junit4, mockito, java – Почему я не могу получить доступ к src / test / resources в тестовом запуске Junit с Maven?

44

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

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

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

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

Ваш Ответ

2   ответа
65

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().

Если вы используете Tycho и eclipse-plugin в качестве типа упаковки, не забудьте добавить add src / test / resources в файл build.properties. Arcadien
Спасибо за этот краткий ответ. Вы действительно правы, что файл можно увидеть в / target / test-classes. Однако я все еще не могу отозвать его из своего кода. Перепробовал все виды комбинаций: 'configService.setMainConfig ("MainConfig.xml"); '' configService.setMainConfig ("target / test-classes / MainConfig.xml"); 'configService.setMainConfig ("classpath: MainConfig.xml"); и т. д. Mick
ПытатьсяgetClass().getResource("/MainConfig.xml").getFile() Tomasz Nurkiewicz
3

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

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

Спасибо за это. Ваша логика верна (см. комментарий выше), но, к сожалению, я все еще не могу заставить это работать Mick

Похожие вопросы