2017-02-16 20 views
1

Я использую следующий вызов, чтобы получить поток, чтобы найти имена некоторых моих ресурсов.Как сделать мои тесты JUnit доступными ресурсами из основного?

Thread.currentThread().getContextClassLoader().getResourceAsStream(...) 

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

Как избежать этого дублирования и сделать мои тесты (при прохождении через IDEA) использовать ресурсы из основного?

+0

Я нашел конкретное обходное решение для maven. Проверьте это: http://stackoverflow.com/a/6541151/451518 –

+0

@defaultlocale Спасибо. Я не уверен, что понимаю этот комментарий. И я обновил вопрос, чтобы было ясно, что я просто хочу нормально запускать тесты через IntelliJ IDEA. (Хотя я также хочу, чтобы они работали с Maven позже, я думаю.) –

ответ

3

Все, что у вас есть в src/test/resources, копируется maven-resources-plugin в target/test-classes. Затем все, что у вас есть в src/main/resources, идет в target/classes. Затем maven-surefire-pluginconfigures classpath в таком порядке: target/test-classes первый и target/classes следующий.

Благодаря этому, если ваш ресурс остается как в src/main/resources, так и в src/test/resources, его тестовая версия будет загружена в модульный тест.

Если он существует только в src/main/resources, он будет доступен в модульном тесте без каких-либо дальнейших действий.

Если он существует только в src/test/resources, у вас будет возможность получить к нему доступ только во время модульного тестирования.

+0

Спасибо за ответ Егор. Все, что вы говорите, кажется правдой, и все же оно по-прежнему не работает. Возможно, мне что-то не хватает, поэтому я буду продолжать смотреть. –

+0

На этот комментарий: http://stackoverflow.com/questions/3923129/get-a-list-of-resources-from-classpath-directory/3923685#comment67155595_3923685. Кажется, что если в тестовой папке есть файлы классов, то они не перечисляют интересующие меня файлы неклассов. Если я помещаю файлы неклассов в их собственную папку, тогда он их подбирает. Немного странно. –