Не удается загрузить контекст для теста

Для некоторых тестов мне нужно использовать prod-context и test-context. Но Spring не может найти мой контекст.

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

У меня есть контекст в пути к классам ресурсов.

Entities-src-test-java-Dao-test1
                -resources-META-INF-spring

Мой полный путь C:\Git\Application\Entities\src\test\resources\META-INF\spring

Когда я пытаюсь, например

public class test1{
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("test-beans.xml");
...

или

@ContextConfiguration("file:/C://Git/Application/Entities/src/test/resources/META-INF/spring/test-beans.xml")
public class test1{
...

Или другие разные... У меня ошибка

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [test-beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [test-beans.xml] cannot be opened because it does not exist

Если я запущу этот класс в отладчике и проверю System.getProperty("user.dir") посмотрю C:\Git\Application или new File(".").getAbsolutePath(); покажет мне C:\Git\Application\.

Как это решить?

Путь для @ContextConfiguration должен быть classpath:/META-INF/spring/test-beans.xml.

M. Deinum 27.05.2019 10:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, не так уж хорошо, чтобы расположение файла конфигурации зависело от пути к файлу. Вы уверены, что другой товарищ по команде также поместит исходные коды проекта в папку C:\Git\Application\Entities? Если нет, ваш товарищ по команде, скорее всего, не сможет запустить ваш тестовый пример из коробки, не говоря уже о сервере сборки.

Вместо этого вы можете попытаться сослаться на файл конфигурации, используя путь к классам, чтобы предотвратить такие проблемы с файлами:

@ContextConfiguration("classpath:spring/test-beans.xml")
public class Test{


}

И поместите test-beans.xml в папку C:\Git\Application\Entities\src\test\resources\spring

Спасибо. Мне это помогло... Но почему, я не понимаю ) И везде я использовал путь к файлу, чтобы попытаться загрузить контекст хоть куда-то )

Dred 27.05.2019 10:33

Другие вопросы по теме