2010-04-09 2 views
22

Я пытался загрузить файл конфигурации весной в пути к классам SRC/тест/ресурсы со следующим абстрактным классом:весна - @ContextConfiguration не удалось загрузить файл конфигурации в SRC/тест/ресурсы

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:/applicationContext.xml"}) 
public class BaseIntegrationTests { 

} 

У меня есть файл applicationContext.xml в src/test/resources, но весна не может загрузить его.

спасибо.

+1

Пожалуйста, используйте * code * блоки для выделения фрагментов кода. –

+2

Я думаю, что вам не нужно '/' просто использовать 'classpath: applicationContext.xml' – ant

+0

Этот костюм мне нужен: http://stackoverflow.com/questions/10385452/location-of-spring-context-xml – 2013-06-04 20:40:44

ответ

22

Чтобы быть точными, это содержание тестов выходного каталога (target/test-classes), который находится на пути к классам, а не src/test/resources. Но ресурсы под src/test/resources копируются в каталог вывода по цели resources:testResources (который по умолчанию привязан к process-test-resources).

Сказав это, ваш код выглядит хорошо, и ресурсы для исходного кода теста должны быть скопированы либо вашей IDE, либо Maven при запуске тестов и поэтому должны быть доступны в пути к классу. Поэтому должно быть что-то еще не так. Я вижу, что ваш класс является базовым классом для тестов интеграции. Вы настроили что-нибудь интересное в своем помпе? Вы можете это показать?

+0

ресурсы процесса-тестирования. Исправлена ​​ошибка. Спасибо! – Azee

+0

мой ресурс находится в каталоге тестовых классов, и я могу загрузить файл с помощью 'Myclass.class.getClassLoader.getResource ("/my/path ")'. но не работает с '@ContextConfiguration (location =" classpath:/my/path ")' – herau

1

Вы, кажется, используете maven и пытаетесь запустить тесты изнутри eclipse. Проверьте папку buil (target/test-classes/) за applicationContext.xml. Если его там нет, сначала нужно построить.

5

Существует reported bug с использованием зависимости от пружины (включая SpringJUnit4ClassRunner) с версиями JUnit> 4.4.

Если вы используете версию JUnit новее 4.4, попробуйте переместить ее до 4.4 и посмотреть, разрешает ли она вашу проблему.

0

Я думаю, что у меня есть проблемы предложения этого типа, я узнал, что мое приложение-context.xml не на целевых/тест-классов/neighter на SRC/тест/ресурсы

16

Try с помощью * так, что можно найти в вашем пути к классам

@ContextConfiguration(locations={"classpath*:applicationContext.xml"}) 
+2

Что делает '*' по сравнению с '{" classpath: applicationContext.xml "?? Искать любую глубину пути к классам? Я не могу найти документацию, объясняющую это. – markdsievers

+0

@markdsievers Слияние нескольких файлов в один, а не выбор первого найденного.См. Https://stackoverflow.com/a/3294506/344480 – Matthias

3

ваш контекст приложения должны быть включены в путь к классам и положить *:

@ContextConfiguration(locations = { "classpath:*/application-context.xml" }) 
0

Если вы используете Maven и работает тест C ases from eclipse, проект правой кнопкой мыши> Maven> обновление maven (ALTF5) может сработать для вас.

 Смежные вопросы

  • Нет связанных вопросов^_^